Android组件的生命周期

2017-03-28  本文已影响0人  Jarryd

Activity

关于Activity的生命周期,是作为Android开发者最最基础的知识,我们来看下官方给出的一张图:


Activity生命周期

图上列出了Activity在切换生命周期中执行的主要方法:
OnCreate() -> OnStart() -> onResume() -> onPause() ->onStop() ->onDestroy()
我们一个一个来看:

Paste_Image.png

Service

服务的生命周期比 Activity 的生命周期要简单得多。但是,密切关注如何创建和销毁服务反而更加重要,因为服务可以在用户没有意识到的情况下运行于后台。

Service生命周期
服务的整个生命周期从调用onCreate()开始起,到onDestroy()返回时结束。与 Activity 类似,服务也在onCreate() 中完成初始设置,并在onDestroy()中释放所有剩余资源。 Paste_Image.png Paste_Image.png Paste_Image.png
当同时调用startServicebindService时: Paste_Image.png
从图中可知,当同时调用两个方法时,单单销毁Activity不足以销毁Service,还必须手动调用stopService

BroadcastReceiver

BroadcastReceiver(对象)的生命周期始于onReceive调用,终止时期与注册方式有关
....
<application
.....
 <receiver android:name=".TestReceiver"/>
    </application>

其中TestReceiver继承于BroadcastReceiver。
当我们调用sendBroadcast()发送广播时,对应的BroadcastReceiver会调用onReceive()方法,当此方法执行完后,该BroadcastReceiver对象就被回收了。

Paste_Image.png
...
String action = "action";     //定义Action
 IntentFilter intentFilter = new IntentFilter(action); //定义接收规则
//注册广播,将Action与TestReceiver() 绑定。
 registerReceiver(new TestReceiver(),intentFilter); 
...
Intent intent = new Intent();
intent.setAction(action)
sendBroadcast(intent);  //发送广播

看图,通过动态注册的广播只生成一个BroadcastReceiver(我们调用registerReceiver时传入的对象),当注册广播的Activity被销毁或调用unregisterReceiver时,该BroadcastReceiver同时被回收,这意味着当某个Activity发送广播时,会出现无法接收的结果,所有动态注册的BroadcastReceiver受注册者的生命周期的限制。

以上就是本文内容,如有错误,请指出。

上一篇 下一篇

猜你喜欢

热点阅读