请耐心等待,这很大程度上是解释。
我有一个活动。它的launchMode是singleTop。我已经有了日志语句,所以我可以看到正在执行哪些生命周期例程。
我开始说活动,它通过
onCreate()
onStart()
onResume()
Activity传递一个Intent,而onnt被onResume()
之后运行的东西拾取我认为会发生以下情况,因为我的活动会因为来电而被推到后台。
onPause() <---- since i HAVE NOT pressed Back indicating the activity is over this SAVES STATE
当我离开运行我的Activity的应用程序时,操作系统需要更多资源,而且,我认为,这解释了为什么会这样做:
onStop()
然后我导航回我的应用程序,我看到这个运行:
onNewIntent()
确定。我想我明白这一点 - 因为这就是操作系统在已经启动后与定义为singleTop的Activity进行通信的方式。我是对的吗?
然后我看到了
onRestart()
onStart()
onResume()
这是所有标准的东西
然后我点击Home,然后运行会消耗大量资源并迫使操作系统杀死我的应用程序
我看到了
onPause() <- saves state
onStop()
当我向后导航时,我看到了
onCreate()
onStart()
onResume()
这是有道理的,因为我的活动被杀了,我已经导航回来。 onCreate()是你如何开始一些尚未运行的东西(因为它被杀死了)。 onStart()和on Resume()是正常生命周期的一部分。
所以我再次点击HOME,操作系统杀了我的应用程序
onPause() <- saves state
onStop()
然后我回到它
onCreate()
onStart()
onResume()
这里有什么可以获得奇迹:
我完成了我的活动,然后点击返回离开
onPause() <------- i detect Back was pressed so i DO NOT save state and delete previously saved state
onCreate() <------- say what?
我希望看到onPause()之后的标准内容,如onStop()和onDestroy(),但由于某种原因,这种情况不会发生。
操作系统再次运行我的onCreate(),但由于活动已结束,我尝试通过点击返回键离开,这是在onPause()中检测到的并且没有状态已保存。
onCreate()认为它再次运行。但是没有Intent数据和
因为在第一个onCreate()中传递的Intent消失了,我已经删除了所有保存状态onCreate()很快就会死于NullPointerException
到底是怎么回事?更重要的是,我如何让我的活动死亡并保持死亡?
编辑1:
一些新的信息刚刚曝光。onPause() - isFinishing() is true. good that is what i expect.
onCreate() - isFinishing() is false!?
所以操作系统真的真的再次盯着我的Activity。但为什么呢?