有人遇到FragmentActivity
的问题,在自己拨打finish()
时,它只会调用onPause()
而不会调用onStop()
和onDestroy()
。但该活动在设备上是不可见的?
我没有看到任何其他错误日志。
根据android活动生命周期,如果活动不可见,则应调用onstop()
。但事实并非如此。它发生在Android 5.0上。
我找到了原因,但我不明白为什么会这样。
扩展FragmentActivity,它定义为launchmode:singleTask。
B扩展Activity,它在Manifest中定义了android:launchMode =“singleInstance”,android:theme =“@ android:style / Theme.NoDisplay”。
C扩展了FragmentActivity,在Manifest中定义了launchmode:singleTask,android:excludeFromRecents =“true”,android:taskAffinity =“com.xxx.xxxx.xxx”。
D是serviceConnector单例实例。什么处理来自绑定服务回调的事件。
场景是:
Step1 : A calls B with startActivity(intent).
Step2 : B calls serviceConnector to send event to the service process and finish itself. It has no UI. It is set as Theme.NoDisplay.
Step3 : Service callbacks init C if not exist yet and C handle service responses event.
Step4 : In one case, C calls B with startActivity(intent)
Step5 : B calls serviceConnection to send event. No UI. C will onPause and when B finsih itself, C onResume()
Step6: Service callbacks and found C already exist, no create new one. C handle service respsonses.
Step7: user click button on C Fragement activity, C calls finish itself, But only C got onPause(). C couldn't be finish, no onStop(), no onDestroy() is called.
我不理解C调用B,B finsih本身,C简历和C完成后自己有问题。
答案 0 :(得分:1)
如果您在finish()
内的某个地方致电onCreate()
,则会直接调用onDestroy()
,而无需通过onPause()
和onStart()
方法。
答案 1 :(得分:0)
它只会调用
onPause()
而不会调用onStop()
和onDestroy()
如果从Activity1
开始Activity2
背景具有透明度,则会调用onPause()
Activity1
,但onStop()
会不即可。