2012-07-24 92 views
11

当我的应用程序空闲时,Android会终止进程。 如果用户在一段时间后重新打开应用程序,则只会创建最上面的Activity - 这对我来说是个问题,因为该活动取决于其他对象(现在被销毁)的初始化。死亡后重新启动Android应用程序

我想在这种情况下做的是重新启动应用程序。 我该怎么做?

+0

安卓杀死一个应用程序来释放内存。因此,如果应用程序处于空闲状态,那么在操作系统需要内存来执行其他程序的某个时间后,该应用程序可能会被杀死。 – gkris 2012-07-24 07:22:28

+0

也许你需要在后台的服务来保持你的_vital__objects_运行。您可以使用“粘滞意图”来确保服务在被终止时重新启动。 – DroidBender 2012-07-24 07:22:55

回答

0

您应该考虑在应用程序的Application类的实现中存储这些对象。

如果这些对象包含需要更持久的状态,则应在每个活动的onPause()方法中将这些对象的状态保存到数据库,SharedPreferences中或远程保存。

+6

即使你将它们放在'Application'类中,在Android进程被杀死之后,对象将会丢失,并且你不会从“初始化活动”开始,而是以最后一个可见的开始。 – 2012-07-24 07:27:00

7

只需确定你的Application被推出后,这是以前由Android破坏,你可以通过保持一个变量在自定义Application类做到这一点,并将其设置为true您的应用程序了初始化后。因此,当applicaction在重新启动时,该标志是假的,然后就做出Intent启动您的主Activity指定FLAG_ACTIVITY_CLEAR_TOP

Intent reLaunchMain=new Intent(this,MainActivity.class); 
reLaunchMain.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(reLaunchMain); 
+0

我应该在哪里放这个代码?它崩溃,如果我这样做onCreate的活动 – 2012-07-24 07:43:44

+0

你会得到什么异常?当你现在你的应用程序被Android重新启动时,你应该调用它。 – 2012-07-24 08:09:37

+0

@OvidiuLatcu嗨,应用程序对象重新创建时,你在(和重新创建)的活动不是发射器?我得问这个问题是因为在重新创建活动时我无法连接调试器。 Tks – 2014-01-05 13:38:16

0

我想这个答案只为你。

完成正在进行的呼叫在这之后

 finish(); 
     Intent intent = new Intent(this, sameactivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
相关问题