Android 基础与底层机制面试题

[](()2. 是否使用过本地广播,它和全局广播有什么差别?

引入本地广播的机制是为了解决安全性的问题:

1) 正在发送的广播不会脱离应用程序,比用担心 app 的数据泄露;

2) 其他的程序无法发送到我的应用程序内部,不担心安全漏洞。(比如:如何做一个杀 不死的服务—监听火的 app 比如微信、友盟、极光的广播,来启动自己。)

3) 发送本地广播比发送全局的广播高效。(全局广播要维护的广播集合表 效率更低。 全局广播,意味着可以跨进程,就需要底层的支持。)

本地广播不能用静态注册。----静态注册:可以做到程序停止后还能监听。 使用:

(1) 注册:

LocalBroadcastManager.getInstance(this).registerReceiver(new XXXBroadCastReceiver(), new IntentFilter(action));

(2) 取消注册

LocalBroadcastManager.getInstance(this).unregisterReceiver(receiv er)

[](()3. 是否使用过 IntentService,作用是什么, AIDL 解决了什么问 题? (小米)

如果有一个任务,可以分成很多个子任务,需要按照顺序来完成,如果需要放到一个服 务中完成,那么使用 IntentService 是最好的选择。

一般我们所使用的 Service 是运行在主线程当中的,所以在 service 里面编写耗时的操 作代码,则会卡主线程会 ANR。为了解决这样的问题,谷歌引入了 IntentService. IntentService 的优点:

(1) 它创建一个独立的工作线程来处理所有一个一个 intent。

(2) 创建了一个工作队列,来逐个发送 intent 给 onHandleIntent()

(3) 不需要主动调用 stopSelf()来结束服务,因为源码里面自己实现了自动关闭。

(4) 默认实现了 onBind()返回的 null。

(5) 默认实现的 onStartCommand()的目的是将 intent 插入到工作队列。

总结:使用 IntentService 的好处有哪些。首先,省去了手动开线程的麻烦;第二,不 用手动停止 service;第三,由于设计了工作队列,可以启动多次—startService(), 但是只有一个 service 实例和一个工作线程。一个一个熟悉怒执行。

AIDL 解决了什么问题?

AIDL 的全称:Android Interfac

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值