1. 四种状态
    2. 七个重要方法
    3. 三个嵌套循环

    首先在开头放出生命周期的一张总图:

    四种状态包括

    • 活动(Active/Running)状态
    • 暂停(Paused)状态
    • 停止(Stopped)状态
    • 非活动(Dead)状态

    1. 活动(Active/Running)状态

    当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点能响应用户的操作,属于运行状态,同一个时刻只会有一个Activity 处于活动(Active)或运行(Running)状态。

    此状态由onResume()进入,由onPause()退出

    2. 暂停(Paused)状态

    当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast、AlertDialog等弹出窗口时)它处于暂停状态。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但是当系统内存极小时可以被系统杀掉。

    3. 停止(Stopped)状态

    完全被另一个Activity遮挡时处于停止状态,它仍然保留着所有的状态和成员信息。只是对用户不可见,当其他地方需要内存时它往往被系统杀掉。

    该状态由onStop()进入,如果被杀掉,可能进入onCreate()或onRestart(),如果彻底死亡,进入onDestroy()

    Service有两种启动方式:

    • bindService() 启动远程服务Remote Service

    远程服务允许暴露接口并让系统内不同程序相互注册调用。Local Service无法抵抗一些系统清理程序如MIUI自带的内存清除。

    具体如何防止自己的Service被杀死可以看这个博客Android开发之如何保证Service不被杀掉(broadcast+system/app),已经做到很变态的程度了。此外今天看到,QQ的开启一个像素在前台的做法真的是…呵呵

    一张图解释:

    Service生命周期

    回调方法的结构下图解释的很明白:

    参考博客:圣骑士Wind的博客:Android Service的生命周期