IntentService简单分析

最近看面试题,看到 IntentService有何优点
1Activity的进程,当处理Intent的时候,会产生一个对应的Service;
2Android的进程处理器现在会尽可能的不kill掉你,
3非常容易使用
个人认为不够准确,首先IntentService本身就是一个Service,就是Service的一个扩展, 在onCreate()时,新建了一个线程,和一个Handler,将这个Handler的消息处理放在了这个线程中。最近这个Handler接收到消息,调用onHandleIntent()方法,也就是我们使用IntentService所必须要实现的一个方法。

在onCreate()中初始化Handler机制,并且自己定义了一个线程,这样就运行在了子线程中,避免阻塞,出现ANR。

在Service启动后,发送消息给Handler.

Handler接收到消息,由于是顺序执行,我们处理完之后,调用stopSelf(msg.arg1)方法,用来停止这个Service,在onDestory中,中止Looper

<-------------------->

第二点,Android的进程处理器现在会尽可能的不kill掉你,service作为一个后台服务,如何避免被KILL掉?通常,有很多后台进程在运行,系统会将它们放入到LRU(Last Recent Used,最近使用)列表中,用来决定:最近使用过的最后被KILL,而很长时间没使用过的,将会被第一个KILL掉。 也就是保证一直在用。

所以在这里有一点疑惑,这是不是说明IntentService与Service在系统KILL的时候并没有提升优先级?IntentService是执行完后主动去Kill掉服务,而Service是被动由系统KILL呢?

所以我认为它的优点应该是:

1.内置了Handler机制,在onHandleMessage中进行耗时操作,避免阻塞,出现ANR的现象。

2.服务工作完成后,主动关闭服务。优化了Service,优化了内存。

3非常容易使用,因为我们可以在onHandleMessage中直接写耗时的操作,而不用担心阻塞的问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值