我启动了我的Android应用,它会在第一个屏幕上初始化某个状态。该应用程序有很多屏幕,在随机浏览某些屏幕后,我使用“主页键”最小化应用程序。现在,在通过手机运行其他一些应用程序之后,操作系统决定它需要释放我的应用程序并因此将其杀死。
现在,当我再次点击应用程序图标时,操作系统会记住历史记录并尝试返回到我最小化应用程序的屏幕。但是,问题是因为操作系统在某个时候清除了我的应用程序,所有状态都丢失了,屏幕可能没有任何相关性。
我该如何解决这个问题?我如何确保操作系统调用启动器屏幕(如果之前已清除过,而不是历史记录中的活动)?
答案 0 :(得分:3)
从上面关于单例类初始化的评论中我也遇到了类似于你的情况。由于我无法避免,我所做的是使用了Application类。每当操作系统决定清除您的应用时,下次启动应用时,onCreate
上的Application class
都会被调用。覆盖onCreate
方法以初始化单例类,而不是在启动器屏幕中执行相同操作
代码段如下
public class CellApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// Do your singleton class initialization here
}
}
答案 1 :(得分:2)
您无法确保操作系统调用启动器屏幕。解决此问题的最佳方法是保存屏幕状态。
每当您的某个活动被置于后台onSaveInstanceState时,就会调用它。这允许您将应用程序的状态保存到此方法中提供的包中。如果您的应用程序恢复onCreate将使用完全相同的捆绑包进行调用。您现在可以在用户离开的状态下重建应用程序。
检查onCreate中的bundle是否为null。如果为null,则如果不从捆绑包重建状态,则您的活动是新的。