我最近推出了我的第一个iPhone应用程序,似乎有Android社区的人要求它......所以我开始用SDK开发。
我注意到的第一件事是,在我的iPhone应用程序中,我会在appDelegate中存储某些会话范围的变量。由于我在Android中没有这种结构,我很好奇Android开发人员如何跟踪应用程序中的应用程序状态(希望能够输出大量的单例对象?)
如果单例对象方法是大多数开发人员这样做的方式 - 每次用户点击“主页”按钮并重新点击图标时,我怎样才能确保应用程序以干净状态启动(有什么我可以添加到我的清单以确保它不以这种方式支持多任务处理?)
我的应用程序有很多特定于会话的状态,并且第一次迭代还不支持多任务处理:(
答案 0 :(得分:7)
首先,Android应用程序可以包含多个活动。
如果您想在活动之间共享状态,请使用Application类:How to declare global variables in Android?
如果您只有一个活动,那么您可以在那里保存状态。
注意:当活动不活动(它没有显示GUI)时,并不意味着它被杀死。因此,如果您使用您的应用程序然后关闭它,打开另一个应用程序,然后返回到您的应用程序,它可能仍然“活着”(保留在内存中)并且状态将被保留。
处理此问题的最佳方法是挂钩Activity lifecycle。然后您可以随意设置/重置数据。
答案 1 :(得分:1)
我发现Singletons是在Android应用程序中保留应用程序状态的最佳方式。您可以通过当前关注的活动的onPause()
和onStop()
方法监听用户何时离开应用程序,并在此时对您的数据执行任何操作。尝试覆盖操作系统的OS生命周期管理(例如,在按下Back时尝试终止进程)并不是一种好习惯。如果您希望每次用户离开应用程序时重置应用程序的状态(通过按Home键,或者通过电话或通知中断,或者您有什么内容),只需将所有会话数据放入活动本身。当用户离开时,它将被销毁并在用户返回时重新创建。
我显然不了解您的应用程序的具体细节,但是一旦您熟悉了每个屏幕(Activity)和应用程序的生命周期,您就可以使用回调来管理您的状态你认为合适。
http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
答案 2 :(得分:1)
如果您想在用户点击“home”键时关闭应用,可以在onPause方法中调用finish()。