Android面试—Service和Broadcast

Service定义:

Service是Android四大组件之一,可以在后台长时间运行,为其他组件提供服务。


说明:

首先必须在AMF注册,接下里又到了生命周期了。。。PS:Service 是运行在主线中的 所以不要做耗时操作  

Android面试—Service和Broadcast_第1张图片

这里主要说下两种启动方式的区别:

startService():开启后会一直开后台运行,需要手动关闭自身调用stopSelf()或者其他组件调用stopService()

其生命周期和其他组件无关,理论上可以在后台无限运行。原因不用我说了吧!!!

bindService():调用者和服务生命周期绑定,“同生同死”。


拓展:

IntentService:继承Service并异步处理请求,其内部通过HandleThread和Thread实现,优先级高于普通Service。

IntentService可以多次启动(了解HandlerThread的特性),每个耗时操作都会以工作队列的方式进行处理,且每次只处理一个线程。

特点:任务完成自动停止,异步处理。

使用:a.继承IntentService  b.复写onHandlerIntent() 任务在其中操作





BroadcastReceiver定义:

BroadcastReceiver是Android四大组件之一,用于APP内或者App之间通讯,没有界面。

可以用来启动Activity和Service,或开启NotificationManage通知用户等等。


说明:

生命周期:我的生命只有15s,所以不能做耗时操作

同样要在AMF注册,四大组件都需要。


注册方式:

静态注册:

在AMS中注册,即使App关闭也能结束广播,4.0以后需要启动一次App后才可以。

<action android:name="com.receiver.sss"/>

动态注册:

用来注册的Activity关闭,广播不能再接受

registerReceiver(context, IntentFilter);

unregisterReceiver(receiver);

发送广播:

sendBroadcastReceiver(Intent);

sendOrderedBroadcast();发送有序广播

abortBroadcast();拦截广播,只对有序广播有效


广播的种类:

普通广播

有序广播

本地广播

Sticky广播

LocalBroadcastManager(本地广播)特点

PS:内部Handler来实现的

本地广播只能在自身App内传播,不必担心泄漏隐私数据

本地广播不允许其他App对你的App发送该广播,不必担心安全漏洞被利用

本地广播比全局广播更高效

你可能感兴趣的:(Android面试—Service和Broadcast)