IntentService和AsyncTask
来源:互联网 发布:win7注册表修改mac地址 编辑:程序博客网 时间:2024/06/06 23:50
IntentService 是Serivce+handler的结合产物 AsyncTask是thread+handler的结合产物 不清楚我的总结是不是前不见来者。下面是我对location service ,remote service ,IntentService,AsyncTask的阐述。
为什么用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只能被执行一次,否则将出现异常。
为什么用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只能被执行一次,否则将出现异常。
- IntentService和AsyncTask
- IntentService和AsyncTask的区别
- Android 的线程(AsyncTask、HandlerThread、IntentService详解)和线程池
- Android 的线程(AsyncTask、IntentService详解)和线程池
- Android 的线程(AsyncTask、HandlerThread、IntentService详解)和线程池
- Android中线程形态AsyncTask、HandlerThread 和 IntentService简介
- IntentService AsyncTask,Thread
- Android中线程形态AsyncTask、HandlerThread和IntentService工作原理分析
- Service, Thread, IntentService and AsyncTask 比较
- 第三十四天Service、IntentService、Thread、AsyncTask
- Android 中的线程形态 -- AsyncTask,HandlerThread,IntentService
- Service, Thread, IntentService and AsyncTask 比较
- Android知识点之多线程:Thread、AsyncTask、IntentService
- Android异步相关-AsyncTask/HandlerThread/IntentService
- android 线程(AsyncTask,Threadhandler,intentService)详解
- Service和IntentService
- android Service和IntentService
- 关于IntentService和Service
- .def
- Oracle COALESCE函数
- Python实现“已知三角形两个直角边,求斜边”
- PageRank介绍
- mysql中创建数据表
- IntentService和AsyncTask
- 输出俄文字母表
- ListView滑动时 item出现黑色背景的问题的解决方法
- 占位
- linux下完全删除Oracle
- [设计模式]外观模式(Facade)
- 20130307
- 如何获得root shell
- Oracle中存储过程问题,求大侠请教下