1、Activity的生命周期:
Activity大致会经过如下4个状态:
活动状态:当前Activity位于前台,用户可见,可以获得焦点。
暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点。
停止状态:该Activity不可见,失去焦点。
销毁状态:该Activity结束,或Activity所在的Dalvik进程被结束。
在Activity的生命周期中,如下方法会被系统回调:
onCreate(Bundle savedStatus): 创建Activity时被回调。该方法只会被调用一次。
onStart(): 启动Activity时被回调,。
onRestart(): 重新启动Activity时被回调。
onResume(): 恢复Activity时被回调,onStart()方法后一定会回调 onResume() 方法。
onPause(): 暂停Activity时被回调,也就是系统准备启动或恢复另一个活动时调用。
onStop(): 停止Activity时被回调。
onDestroy(): 销毁Activity时被调用。该方法只会被调用一次。
开发Activity时可根据需要选择性地覆盖指定方法:
覆盖onCreate(Bundle savedStatus)方法:该方法用于对该Activity执行初始化,如加载布局、绑定事件...
覆盖onPause()方法:可以保存进行状态,保存一些关键数据
覆盖onResume()方法:恢复保存的状态
2、关于Service:
开发者开发Service的步骤与开发Activity的步骤很像,开发Service组件需要先开发一个Service的子类,然后在AndroidManifest.xml文件中配置该Service,配置时可通过<intent-filter.../>元素指定它可被哪些Intent启动。
Service与Activity还有一点相似之处,它们都是从Context派生出来的,因此它们都可调用Context里定义的如getResources()、getContentResolver()等方法。
Android系统本身提供了大量的Service组件,开发者可通过这些系统Service来操作Android系统本身。
Service中也定义了系列生命周期方法:
IBinder onBind(Intent intent): 该方法是Service子类必须实现的方法。该方法返回一个IBinder对象,应用程序可通过该对象与Service组件通信。
void onCreate(): 当该Service第一次被创建后将立即回调该方法。
void onDestroy(): 当该Service被关闭之前将会回调该方法。
void onStartCommand(Intent intent, int flags, int startId): 该方法的早期版本是void onStart(Intent intent, int startId), 每次客户端调用startService(Intent)方法启动该Service时都会回调该方法。
boolean onUnbind(Intent intent): 当该Service上绑定的所有客户端都断开连接时将会回调该方法。
调用Context里定义的startService()、stopService()方法即可启动、关闭Service。
每当Service被创建时会回调onCreate方法,每次Service被启动时都会回调onStart方法——多次启动一个已有的Service组件将不会再回调onCreate方法,但每次启动时都会回调onStartCommand()方法。
如果希望Service组件做某些事情,那么只要在 onCreate() 或 onStartCommand() 方法中定义相关业务代码即可。
Android系统中运行Service有如下两种方式:
通过Context的 startService() 方法:通过该方法启用Service,访问者与Service之间没有关联,即使访问者退出了,Service仍然运行,也无法进行通信、数据交换。
通过Context的 bindService() 方法:使用该方法启用Service,访问者与Service绑定在了一起,访问者一旦退出,Service也就终止,使用unbindService()方法关闭Service,可以进行方法调用或数据交换。
bindService(Intent service, ServiceConnection conn, int flags)的三个参数的解释如下:
service:该参数通过Intent指定要启动的Service
conn:该参数是一个ServiceConnection对象,该对象用于监听访问者与Service之间的连接情况。当访问者与Service之间连接成功时将回调该ServiceConnection对象的 onServiceConnected(ComponentName name, IBinder service)方法,onBind(Intent intent)方法所返回的IBinder对象将会传给service参数,这样访问者就可通过该IBindler与被绑定Service进行的通信;当Service所在的宿主进程由于异常中止或由于其他原因终止,导致该Service与访问者之间断开连接时回调该ServiceConnection对象的onServiceDisconnected(ComponentName name)方法(当调用者主动通过unBindService()方法断开与Service的连接时,ServiceConnection对象的onServiceDisconnected(ComponentName name)方法并不会被调用)
flags:指定绑定时是否自动创建Service(如果Service还未创建)。该参数可指定为0(不自动创建)或BIND_AUTO_CREATE(自动创建)