我有一个显示一些奇怪错误的应用程序。应用程序处于某些全局数据为 null 而不应为 null 的状态(查看应用程序的逻辑,无法到达该状态)。我怀疑操作系统要么自己覆盖全局数据,要么正在重新启动我的应用程序(或启动我的应用程序)并绕过初始活动。这些场景中的任何一个都可能吗?(当然我的逻辑可能总是错误的,但在这一点上,我真的怀疑发生了其他事情)。
4 回答
是的,这实际上在各种情况下都是可以预料的:
如果您的应用程序进入后台并且 Android 最终将其杀死以回收资源,那么随后的返回对用户来说可能看起来是无缝的,但实际上发生在一个全新的应用程序进程中。返回将直接返回到他们最后进入的活动,但在一个新的过程中。包中其他活动(例如您的启动器活动)的 onCreate() 将不会被调用,除非这些活动被用户导航或某处的 Intent 明确地重新访问。
Launcher 活动(即带有 android.intent.category.LAUNCHER 的东西)并不是您在应用程序中可以拥有的唯一入口点。许多应用程序包含具有意图过滤器的活动,这些意图过滤器注册它们以处理具有 android.intent.category.DEFAULT 类别的 android.intent.action.VIEW 和它们可以处理的某种类型的内容的规范。此类应用程序甚至可能在包中根本没有启动器活动(尽管可能包含一个用于浏览内容、设置配置选项或用于其他功能的活动)
我对此表示高度怀疑。启动器的想法是定义从操作系统接收启动意图的活动。
根据您描述的行为猜测,您可能需要对 Activity 生命周期进行一些研究。
启动器用于识别在应用程序启动时要启动的活动....所以我认为这不可能...
Can Android OS start app with different Activity than Launcher Activity?
不,它总是搜索带有启动器标签的活动。
添加您的代码,并具体说明哪些全局数据正在获取空值:)