Activity
作用:主要用于界面的展示以及和用户之间的交互。
启动方式:通过Intent显式或者隐式的启动。显示明确指向一个activity,隐式则是指向一个或者多个目标activity。
生命周期:正常情况下oncreate->onstart->onresume->onpause->onstop->ondestory。
有一次设备突然断电重进activity,打印生命周期如下:oncreate->onresume->onpause->onresume,不知为何。
启动模式:
standard:标准模式,每次启动都会创建一个实例。
singleTop:如何要创建的activity已经位于任务栈的栈顶,将不再重新创建,直接服用。
singleTask:只要activity位于栈内就不会重新创建,会将位于此activty上面的其他activity移除栈。
singleInstance:单实例模式,设置此启动模式的actvity只会位于一个任务栈中。
是否可以开启多进程:可以开启多进程,需要配置android:exported属性。
Service
作用:主要用于后台任务的计算,但是依旧运行在主线程中。
启动方式:分别可以通过startService以及bindService启动,其中bindService通常主要用于与activity进行绑定。
生命周期:
startService:oncreate->onStartcommand->onStop->onDestory,其中oncreate只会被调用一次,onstartcommand会被多次调用。
bindservice:oncreate->onbind->onunbind->ondestory。
是否可以开启多进程:可以开启多进程,需要配置android:exported属性。
BroadcastReceiver
作用:主要用于不同组件、乃至应用之间消息的传递,同样不能进行耗时操作。
注册方式:分为静态注册以及动态注册两种方式:
静态注册:配置文件中注册,一直可以接收到消息。
动态注册:需要自己在代码中注册,记得进行解绑操作。
同时还分为有序广播以及无序广播,有序广播可以按优先级进行拦截,无序广播都可以接收到。
是否可以开启多进程:可以开启多进程,需要配置android:exported属性。
ContentProvider
作用:主要用于不同应用间数据的共享,它是以一张或者多张表的形式将数据呈现给外部应用,通过调用ContentResolver进行数据的增删改查。
实现ContentProvider需要实现其对应的:
onCreate():初始化 provider
query():查询数据
insert():插入数据到 provider
update():更新 provider 的数据
delete():删除 provider 中的数据
getType():返回 provider 中的数据的 MIME 类型
注意:oncreate执行在主线程中,增删改查可能被多线程并发执行。
是否可以开启多进程:可以开启多进程,需要配置android:exported属性。
网友评论