标签:技术分享 提示 man nbsp 入栈 加载 create 对话框 存在
整理一下Android的四大组件的生命周期吧,参考书目:《第一行代码》
ContentProvider
Activity的生命周期:
Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称为返回栈(Back Stack)。栈是一种后进先出的数据结构,在默认的情况下,每当启用了一个新的活动,他会在返回栈中入栈,并处于栈顶的位置。而每当按下Back键或调用finish()方法去销毁回一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。系统总是会显示处于栈顶的活动给用户。
如图展示了返回栈是如何管理活动入栈出栈的操作的:
活动的生存期:
流程示意图:
Service的生命周期
当一个项目的any where 调用了Context的startService()方法,相应的服务就会启动起来,并回调onStartCommand()方法。如果服务未创建则onCreate()方法先于onStartCommand()方法执行。服务启动后会一直保持运行状态,一直到stopService() / stopSelf()方法被调用。*虽然每调用一次startService()方法,onStarCommand()就会执行一次,但实际上每个服务都只会存在一个实例。所以,不管调用了多少次startService()方法,都只需调用一次stopService()或stopSelf()方法服务就会停止下来了!
In addtion,还可以调用Context的bindService()方法来获取一个服务的持久连接,会回调服务中的onBind()方法。同理。若服务未创建,则onCreate()方法先执行。之后,调用方可获取到onBind()方法里返回的IBinder对象的实例。
调用了startService()方法后,再去调用stopService()方法,这时服务中的onDestroy()方法就会执行,表示服务已经销毁了。同样的,当调用了bindService()方法后,又去调用unbindService()方法,onDestroy()方法也会执行。
当对一个服务既调用了 startService() 方法,又调用了 bindService() 方法时,要同时调用stopService() 和 unbindService()方法才会执行。
示意图:
BroadcastReceiver的生命周期:
生命周期只有十秒左右,如果在onReceive()内超过十秒内的事情,就会报:Application No Response程序无响应的错误信息,他的生命周期从回调onReceive()方法开始到该方法返回结果后结束。
ContentProvider的生命周期:
创建ContentProvider的步骤:
标签:技术分享 提示 man nbsp 入栈 加载 create 对话框 存在
原文地址:https://www.cnblogs.com/edisonlm/p/9283387.html