1.Activity的生命周期
1)Activity的三个状态:活跃或运行状态(在屏幕前台时)、暂停状态(失去焦点但仍然对用户可见即是,在它之上有另外一个activity,这个activity透明或
未能完全遮蔽全屏)、停止状态(完全被另一个activity覆盖)。
2)Activity声明周期方法:onCreate()、onStart、onRestart、onResume()、onPause()、onStop()、onDestroy()这7个方法定义了activity完整
的生命周期。一个完整的生命周期是从第一次调用onCreate()开始到调用onDestroy()为止;可视生命周期自onStart()调用到
相应的onStop()调用,在这个期间用户可以看到此activity;一个前台生命周期自onResume()调用起,到onPause()调用为止,
在此期间,activity位于前台最上面并与用户进行交互。
3)Activity生命周期方法的解释:
onCreate():在activity第一次被创建的时候调用,可以创建视图、绑定数据至列表等,后继调用onStart(),此时这个activity不可杀死。
onRestart():在activity停止后,在再次启动之前调用。后继调用onStart(),此时不可杀死。
onStart():当activity正要变得为用户所见时被调用。当activity转向前台时后继调用onResume(),隐藏时后继调用onStop(),不可杀死。
onResume();在activity开始与用户进行交互之前被调用,后继调用onPause(),不可杀死。
onPause():当系统将要启动另一个activity时调用。这个方法可以用来将未保存的变化记性持久化。当activity重新回到前台后继调用onResume(),
当activity变为用户不可见时后继调用onStop(),此时可以杀死。
onStop();当activity不再为用户可见时调用。这个可能发生在它被销毁或另一个activity覆盖了它。如果activity再次回到前台跟用户交互则后继调用
onRestart(),如果关闭activity则后继调用onDestroy();可以杀死。
onDestroy():在activity销毁前调用。可杀死。
2.服务生命周期
有两种方法使用服务:1)它可以启动并运行,直至有人停止或自己停止。可以调用Context.startService()启动,调用Context.stopService()结束
也可以调用Service.stopSelf()/Service.stopSelfResult()自己停止。同时不管我们调用了多少次startService(),我们只
需要调用一次stopService()就够了。
2)如果是绑定服务,我们可以调用Context.bindService()方法建立连接,调用Context.unbindService()关闭。
Service的生命周期方法:onCreate() 、onStart(Intent intent) 、onDestroy()
1)服务的完整生命周期始于调用onCreate()而终于onDestroy()方法返回。服务在onCreate()里面进行它自己的初始化,在onDestroy()
里面释放所有资源。
2)服务的活跃生命周期始于OnStart().这个方法用来处理传递给startService()的Intent对象。但是注意的是,onCreate()和OnDestroy()方法
在所有服务中都会被调用,而OnStart()仅会被startService()方法所启用的服务调用。
3.广播接收器生命周期:当广播消息抵达接收器时,Android调用它的onReceive()方法并将包含消息的Intent对象传递给它。广播接收器仅在执行这个
方法的时候处于活跃状态,当onReceive()返回后,它即为失活状态。
拥有一个活跃的广播接收器的进程会被保护起来而不会被杀死。但仅拥有失活状态组件则会在其他进程需要它所占的内存时候随
时被杀掉。
4.进程与生命周期:Android系统会尽可能长的延续一个应用程序进程,但在内存低的时候,仍然会不可避免的移除进程。因此为了决定保留和移除进程,
Android将每个进程放入一个重要性层次中。分为5层:
1)前台进程:是用户操作所必须的。它运行着与用户交互的activity、一个正在于用户交互的activity使用者它提供的一个服务、它包含着一个正在执行生命
周期回调方法的Service对象、它包含着一个正在执行onREceive()方法的BroadcastReceiver对象。
只有当内存是在无法供给它们维持同时运行时才会被杀死。
2)可视进程:没有前台组件,但仍可被用户在屏幕上所见。它包含着一个不在前台,但仍未用户可见的activity,比如前台activity是一个对话框,而之前
的activity位于其下并可见、它包含一个绑定至一个可视的activity的服务。
只有到了非到不杀死它们便无法维持前台进程运行时,才会被杀死。
3)服务进程:是由startService()方法启动的服务,它不会变成以上两类。服务进程不会直接为用户所见,但它们一般做着用户所关心的事情。
只有在系统内存不足以维持前台进程和可视进程的运行需要时被杀死。
4)背景进程:包含目前不为用户所见的activity。这些进程与用户体验没有直接联系,可在任意时刻被杀死以回收内存供前台进程和可视进程及服务进程使用
5)空进程:不包含任何活动应用程序组件。