安卓突击:Activity的基础知识

1,Activity的生命周期
必须调用的三个方法,onCreate() --> onStart() --> onResume(),用 AAA 表示
( 1 )父 Activity 启动子 Activity,子 Actvity 退出,父 Activity 调用顺序如下
AAA --> onFreeze() --> onPause() --> onStop() --> onRestart() --> onStart(),onResume() …
( 2)用户点击 Home, Actvity 调用顺序如下
AAA --> onFreeze() --> onPause() --> onStop() -- Maybe --> onDestroy() – Maybe
( 3)调用 finish(), Activity 调用顺序如下
AAA --> onPause() --> onStop() --> onDestroy()
( 4)在 Activity 上显示 dialog, Activity 调用顺序如下
AAA
( 5)在父 Activity 上显示透明的或非全屏的 activity, Activity 调用顺序如下
AAA --> onFreeze() --> onPause()
( 6)设备进入睡眠状态, Activity 调用顺序如下
AAA --> onFreeze() --> onPause()


2,如果后台Activity由于某种原因被系统回收,通过onSaveInstanceState()来保存当前的状态。


3,如何退出 Activity?如何安全退出已调用多个 Activity 的 Application?
对于单一 Activity 的应用来说,退出很简单,直接 finish() 即可。也可以用 killProcess() 和 System.exit() 这样的方法。
对于多个Activity来说,可以有如下几个方法:
1)、抛异常强制退出:
该方法通过抛异常,使程序 Force Close。
验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出 Force Close 的窗口。
2)、记录打开的 Activity:
每打开一个 Activity,就记录下来。在需要退出时,关闭每一个 Activity 即可。
3)、发送特定广播:
在需要结束应用时,发送一个特定的广播,每个 Activity 收到广播后,关闭即可。
4)、递归退出
在打开新的 Activity 时使用 startActivityForResult,然后自己加标志,在 onActivityResult 中处理,递归关闭。
除了第一个,都是想办法把每一个 Activity 都结束掉,间接达到目的。但是这样做同样不完美。
你会发现,如果自己的应用程序对每一个 Activity 都设置了 nosensor,在两个 Activity 结束的间隙, sensor 可能有效了。


4







































原文地址:https://www.cnblogs.com/zhuzhenfeng/p/4744628.html