Thread、AsycTask、IntentService的比较

IntentService 是Serivce+handler的结合产物  AsyncTask是thread池+handler的结合产物 
为什么用service而不用thread:android 的系统机制有关,我们先拿 Thread 来说 Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后 ,如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该 Thread 的引用。另一方面,你没有办法在不同的 Activity 中对同一 Thread 进行控制。
location serivce  不是一个单独的进程,它和应用程序在同一个进程中。只能在当前应用中调用service。kill当前应用则service也随之消亡。
remote service   独立与应用程序之外进程的进程(必须在声明的时候以android:process=":remote"方式声明),配合AIDL可以实现进程间的相互调用。remote service所依附的那个应用如果应用kill掉,但是remoteservice还在运行,除非你卸载当前应用。 

选中你的进程com.example.android.intent_service然后点 stop,则应用被kill掉,而com.example.android.intent_service:remote却安然无恙。

IntentService 是Serivce+handler的结合产物,可以在onHandleIntent直接处理耗时操作。而本地service和远程service不能在onStart方法中执行耗时操作,只能放在子线程中进行处理,当有新的intent请求过来都会线onStartCommond将其入队列,当第一个耗时操作结束后,就会处理下一个耗时操作(此时调用onHandleIntent),都执行完了自动执行onDestory销毁IntengService服务。
AsyncTask是thread池+handler的结合产物,减少程序中线程过多开销过大,操作和管理更加方便。AsyncTask实例必须在UI Thread中创建,execute方法必须在UI Thread中调用不能手动调用onPreExcute(),onPostExcute(Result)。task只能被执行一次,否则将出现异常。

数据简单使用AsyncTask:实现代码简单, 数据量多且复杂使用handler+thread :相比较AsyncTask来说能更好的利用系统资源且高效

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值