2011-01-20 76 views
3

我开始我的Android应用程序,该应用程序依次在第一个屏幕上初始化某些状态。该应用程序有很多屏幕,在随机浏览一些屏幕后,我使用“主键”最小化应用程序。现在,在运行手机中的其他应用程序之后,操作系统决定释放我的应用程序并因此杀死它。通过Android清除应用程序

现在,当我的应用程序图标再次单击,操作系统会记住历史,并试图回到屏幕从我最小化的应用程序。但是,问题在于操作系统有时候清除了我的应用程序,我的所有状态都丢失了,屏幕可能没有任何关联。

如何解决呢?如何确保操作系统调用启动器屏幕,如果它已被清除而不是历史记录中的活动?

回答

3

从你对单身类以上的评论被初始化我类似,你也面临的情况。由于我无法避免它,我所做的是我使用了Application类。每当操作系统决定清除您的应用时,下次启动应用时,Application class上的onCreate将被调用。重写onCreate方法来初始化单例类,而不是在启动屏幕

的代码片段如下所示

public class CellApplication extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     // Do your singleton class initialization here 
    } 
} 
2

你不确保OS调用启动画面。解决此问题的最佳方法是保存屏幕状态。

你的活动每次一个放在后台onSaveInstanceState被调用。这使您可以将应用程序的状态保存到此方法提供的包中。如果您的应用程序继续使用,则将使用完全相同的包进行调用。现在您可以重建应用程序,使其处于用户离开它的相同状态。

只是检查如果在的onCreate捆绑为空。如果它为空,那么如果不从捆绑重建状态,则您的活动是新的。

+0

我的情况不是那么简单的做同样的。我有一个巨大的单例类,在整个应用程序使用的启动器屏幕上实例化。现在,当我的应用程序从一个随机屏幕而不是启动屏幕开始,这个单身并没有初始化。而事情就是要折腾。 – Codevalley 2011-01-20 08:03:03

+0

也许你必须考虑这个单例练习;)如果单例不可用,则可以完成onCreate方法中的每个活动。这应该使用户回到启动器屏幕,因为您创建的活动的静态将关闭。 – Janusz 2011-01-20 08:50:49

相关问题