目前我正在开发一个使用登录活动的android应用程序,一旦用户登录,一个主要活动。应用程序使用后台服务(IntentService)在用户登录时与服务器进行通信。然后该服务将获取的用户详细信息存储在数据库中,这样用户就不需要在每次启动时登录应用程序。
一旦用户进入主活动,活动就会通过服务从服务器获取一些数据。然后(以编程方式)在屏幕上显示该数据。我认为这与(众所周知的)Wordfeud 应用程序的工作方式相当。首先它让您登录,然后从服务器获取您正在玩的游戏,然后显示它们。
我的问题是,如果我旋转屏幕,主要活动将被破坏并重新启动,从而导致再次调用 oncreate() 函数。在我目前的设计中,这意味着再次从服务器获取数据,这是非常不必要的。如果用户关闭了应用程序并在以后再次开始使用它,我只希望再次获取数据。
我想知道解决这个问题的最佳主意是什么?最简单的方法是禁止屏幕旋转,但我认为这对用户不太友好。另一种方法是在应用程序与服务器通信以登录用户时获取所有数据,并在屏幕上添加一个重新加载/获取按钮,以便用户可以手动获取数据。这种方法的缺点是,如果用户在几个小时后重新打开应用程序,数据可能已经过时。这也不是那么用户友好。
也许对于这个问题还有其他我不知道的解决方案,比如在屏幕旋转时绕过(部分) oncreate() 函数的能力或类似的东西。
我很好奇是否有解决方案,如果有,那会是什么!