Activity
关于Activity的生命周期,是作为Android开发者最最基础的知识,我们来看下官方给出的一张图:
Activity生命周期
图上列出了Activity在切换生命周期中执行的主要方法:
OnCreate() -> OnStart() -> onResume() -> onPause() ->onStop() ->onDestroy()
我们一个一个来看:
Paste_Image.png
onCreate()
Activity启动执行的第一个方法,主要用于初始化布局(调用setConteView)。
onStart()
在onCreate() 后调用,如果该Activity为可见,则立刻调用onResume(),否则调用OnStop()。注意:从图中我们可以看到,从onStart() 到 onResume() 的时间非常短(毫秒级),故不推荐在该方法中执行某些耗时操作。
OnResume()
该状态属于可见且可交互。此时Activity完全对用户可见。
OnPause()
当前Activity可见性更改时调用。如(弹出对话框、back键返回、Home键返回等等)
OnStop()
当前Activity完全不可见时调用,例如像弹出对话框就不会调用该方法。
OnDestroy()
当Activity销毁时调用,像手动 (调用finish()),或者被系统回收内存时调用。
Service
服务的生命周期比 Activity 的生命周期要简单得多。但是,密切关注如何创建和销毁服务反而更加重要,因为服务可以在用户没有意识到的情况下运行于后台。
Service生命周期
服务的整个生命周期从调用onCreate()开始起,到onDestroy()返回时结束。与 Activity 类似,服务也在onCreate() 中完成初始设置,并在onDestroy()中释放所有剩余资源。
Paste_Image.png
Paste_Image.png
Paste_Image.png
当同时调用startService与bindService时:
Paste_Image.png
从图中可知,当同时调用两个方法时,单单销毁Activity不足以销毁Service,还必须手动调用stopService。
BroadcastReceiver
BroadcastReceiver(对象)的生命周期始于onReceive调用,终止时期与注册方式有关
....
其中TestReceiver继承于BroadcastReceiver。
当我们调用sendBroadcast()发送广播时,对应的BroadcastReceiver会调用onReceive()方法,当此方法执行完后,该BroadcastReceiver对象就被回收了。
Paste_Image.png
....
....
动态注册
动态注册是通过代码注册广播
...String action = "action"; IntentFilter intentFilter = new IntentFilter(action); registerReceiver(new TestReceiver(),intentFilter);
...
Intent intent = new Intent();
intent.setAction(action)
sendBroadcast(intent);
看图,通过动态注册的广播只生成一个BroadcastReceiver(我们调用registerReceiver时传入的对象),当注册广播的Activity被销毁或调用unregisterReceiver时,该BroadcastReceiver同时被回收,这意味着当某个Activity发送广播时,会出现无法接收的结果,所有动态注册的BroadcastReceiver受注册者的生命周期的限制。
以上就是本文内容,如有错误,请指出。