当我的应用程序空闲时,Android会终止进程。 如果用户在一段时间后重新打开应用程序,则只会创建最上面的Activity - 这对我来说是个问题,因为该活动取决于其他对象(现在被销毁)的初始化。死亡后重新启动Android应用程序
我想在这种情况下做的是重新启动应用程序。 我该怎么做?
当我的应用程序空闲时,Android会终止进程。 如果用户在一段时间后重新打开应用程序,则只会创建最上面的Activity - 这对我来说是个问题,因为该活动取决于其他对象(现在被销毁)的初始化。死亡后重新启动Android应用程序
我想在这种情况下做的是重新启动应用程序。 我该怎么做?
您应该考虑在应用程序的Application
类的实现中存储这些对象。
如果这些对象包含需要更持久的状态,则应在每个活动的onPause()
方法中将这些对象的状态保存到数据库,SharedPreferences中或远程保存。
即使你将它们放在'Application'类中,在Android进程被杀死之后,对象将会丢失,并且你不会从“初始化活动”开始,而是以最后一个可见的开始。 – 2012-07-24 07:27:00
只需确定你的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);
我应该在哪里放这个代码?它崩溃,如果我这样做onCreate的活动 – 2012-07-24 07:43:44
你会得到什么异常?当你现在你的应用程序被Android重新启动时,你应该调用它。 – 2012-07-24 08:09:37
@OvidiuLatcu嗨,应用程序对象重新创建时,你在(和重新创建)的活动不是发射器?我得问这个问题是因为在重新创建活动时我无法连接调试器。 Tks – 2014-01-05 13:38:16
我想这个答案只为你。
完成正在进行的呼叫在这之后
finish();
Intent intent = new Intent(this, sameactivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
安卓杀死一个应用程序来释放内存。因此,如果应用程序处于空闲状态,那么在操作系统需要内存来执行其他程序的某个时间后,该应用程序可能会被杀死。 – gkris 2012-07-24 07:22:28
也许你需要在后台的服务来保持你的_vital__objects_运行。您可以使用“粘滞意图”来确保服务在被终止时重新启动。 – DroidBender 2012-07-24 07:22:55