四大组件的生命周期和简单用法

2019-05-06  本文已影响0人  d85a3f21310a

Activity的生命周期:

启动方法:

创建一个Intent对象,将该activity以及将要打开的activity传进去,

然后Intent对象将代入startActivity()即可启动

startActivity(Intent(this@someActivity,targetClass::class.java))

Service的生命周期:

使用方法有两种:

startService()

通过简单的startService()进行service启动,此后启动该Service的组件无法把控Service的生命周期,理论上此后该Service可以在后台无期限运行,但根据实际情况该Service可能会在任意一个时刻被杀死

我们可以在onStartCommand()里面做我们要做的操作,虽然运行anr时间比Activity多了近一倍,但Service跟Activity一样不可以做耗时操作,

bindService()

通过绑定的方式启动Service

绑定后,该Service与启动绑定操作的组件形成绑定,当组件销毁时,该Service也随着销毁。

BroadcastReceive广播接收器生命周期:

生命周期只有十秒左右,如果在 onReceive() 内做超过十秒内的事情,就会报ANR(Application No Response) 程序无响应的错误信息

它的生命周期为从回调onReceive()方法开始到该方法返回结果后结束

用法

静态注册(常驻广播)

在AndroidManifest.xml中进行注册,App启动的时候自动注册到系统中,不受任何组件生命周期影响,(即便应用程序已经关闭),但是 耗电,占内存 

动态注册(非常驻广播)

在代码中进行注册,通过IntentFilter意图过滤器筛选需要监听的广播,记得注销(推荐在onResume()注册,在onPause()注销),使用灵活,生命周期随组件变化

ContentProvider

提供数据的进程使用contentProvider 内容提供者

获取数据的进程使用contentresolver 内容解析器

上一篇下一篇

猜你喜欢

热点阅读