android活动singleTop,onPause()然后意外onCreate()

时间:2015-06-04 01:19:51

标签: android android-activity

好吧,这是一个奇怪的,让我的眼睛交叉了几个小时。

请耐心等待,这很大程度上是解释。

我有一个活动。它的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()/ onCreate()序列中,我记录了isFinished()的值。它显示

onPause() - isFinishing() is true.  good that is what i expect.
onCreate() - isFinishing() is false!?  

所以操作系统真的真的再次盯着我的Activity。但为什么呢?

0 个答案:

没有答案