Android面试—Service和Broadcast

Service定义:

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


说明:

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

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

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后才可以。

<intent-filter android:priority="1000">

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

<intent-filter/>

动态注册:

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

registerReceiver(context, IntentFilter);

unregisterReceiver(receiver);

发送广播:

sendBroadcastReceiver(Intent);

sendOrderedBroadcast();发送有序广播

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


广播的种类:

普通广播

有序广播

本地广播

Sticky广播

LocalBroadcastManager(本地广播)特点

PS:内部Handler来实现的

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-androi...
    eddy_wiki阅读 8,533评论 0 20
  • 面试题总结 通用 安卓学习途径, 寻找资料学习的博客网站 AndroidStudio使用, 插件使用 安卓和苹果的...
    JingBeibei阅读 5,672评论 2 21
  • 今天大年三十,来个害羞的小鹿,再来个酒足饭饱的兔子,祝福各位简友鸡年大吉,万事如意! 每逢佳节胖三斤,你会中招吗?
    遇见花盛开阅读 2,839评论 0 1
  • 7/21 小雪 深圳【每日一结构】 结构思考力21天思维改善训练营 G:【感悟】 如何面对家人的任性 【1】从她的...
    雪23阅读 1,144评论 0 0
  • 有很多人,明明财运很好,挣了不少钱,但是挣的钱却存不住,甚至挣的钱还不够花,这种情况就是风水引起的漏财了。 如果家...
    路在脚下吗阅读 3,365评论 0 0