android面试service,Android面试—Service和Broadcast

Service定义:

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

说明:

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

f90e27f5a759?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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

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

动态注册:

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

registerReceiver(context, IntentFilter);

unregisterReceiver(receiver);

发送广播:

sendBroadcastReceiver(Intent);

sendOrderedBroadcast();发送有序广播

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

广播的种类:

普通广播

有序广播

本地广播

Sticky广播

LocalBroadcastManager(本地广播)特点

PS:内部Handler来实现的

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值