当Android应用程序被杀掉后如何重启?

15

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

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


Android会杀死一个应用程序以释放内存。因此,如果该应用程序处于空闲状态,则在操作系统需要内存来执行其他程序时,该应用程序很可能会被杀死。 - gkris
也许您需要在后台运行一个服务来保持关键对象的运行。您可以使用“粘性意图”确保在服务被杀死时重新启动。 - DroidBender
3个回答

9

如果您想在Android系统销毁应用后重新启动应用程序,请在自定义的Application类中保留一个变量,并在初始化应用程序后将其设置为true,以便识别您的Application是否被销毁。因此,当应用程序重新启动时,该标志为false,然后只需创建一个Intent以启动您的主要Activity并指定FLAG_ACTIVITY_CLEAR_TOP

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

1
我应该把这段代码放在哪里?如果我把它放在活动的onCreate中,它会崩溃。 - Erik Sapir
你会得到什么异常?当你知道你的应用程序被Android重新启动时,你应该调用它。 - Ovidiu Latcu
@OvidiuLatcu 你好,当你所在的活动(并重新创建)不是启动器时,应用程序对象是否会被重新创建?我问这个问题是因为我无法在重新创建活动时连接调试器。谢谢。 - EyeQ Tech

1

我认为这个答案只适用于您。

完成进程后,请调用此函数。

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

-1

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

如果这些对象包含需要更持久的状态,你应该在每个Activity的onPause()方法中保存这些对象的状态,可以保存到数据库、SharedPreferences或远程服务器。


10
即使你将它们保存在“Application”类中,在Android进程被杀死后,这些对象也会丢失,你的应用程序将不会从“初始化活动”开始,而是从最后一个可见的活动开始。 - Ovidiu Latcu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接