我的应用程序有几个活动,包括StartActivity
声明
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
在清单中。我也有一个Application
子类,就是在这里开始一些初始化任务。初始化代码在后台线程中执行,因此StartActivity
只需显示启动屏幕并等待后台初始化完成。在初始化完成之前,控制权不会传递给任何其他 Activity,这一点很重要。
有时,在我的应用程序运行后,它会通过用户按 HOME 键发送到后台,并且可能会打开其他一些应用程序。如果我的应用在一段时间后从启动器重新启动,则应用会在上次打开应用时处于活动状态的任何活动中愉快地恢复。这可以。
如果在我的应用程序重新启动之前有几个小时的延迟,那么有趣的事情就会开始发生。似乎该进程已重新启动-我可以从日志输出中得知我的Application.onCreate()
已被调用,并且后台初始化任务已启动-但至关重要的StartActivity
是,该进程已被绕过并且系统已尝试直接进入上次活动的任何活动应用程序已打开。
在我看来,这似乎是一个不可能的情况。进程永远不可能重新启动(在先前被终止之后,可能是由于不活动)并直接跳转到非MAIN
活动。要么应用程序处于活动状态,并且可以简单地恢复上次使用的 Activity,而无需重新初始化应用程序;或者,应用程序已死,应该从头开始重新初始化,包括启动MAIN
Activity。它永远不应该处于这种奇怪的僵尸状态。
我的理解是错误的,还是 Android 正在做一些完全疯狂的事情?
可能相关:Android:系统何时卸载类?