IntentService可处理耗时操作
来源:互联网 发布:爱普生r390清零软件 编辑:程序博客网 时间:2024/06/01 08:55
IntentService使用队列的方式将请求的Intent加入队列,然后开启一个worker thread(线程)来处理队列中的Intent,
对于异步的startService请求,IntentService会处理完成一个之后再处理第二个,每一个请求都会在一个单独的worker thread中处理,
不会阻塞应用程序的主线程,这里就给我们提供了一个思路,
对于异步的startService请求,IntentService会处理完成一个之后再处理第二个,每一个请求都会在一个单独的worker thread中处理,
不会阻塞应用程序的主线程,这里就给我们提供了一个思路,
如果有耗时的操作与其在Service里面开启新线程还不如使用IntentService来处理耗时操作。
IntentService继承Service,使用工作队列来处理所有请求,一次处理一件。当有多个请求同时发出,可以保证线程的安全性。
你所要做的只需要实现onHandleIntent()方法在后台处理从不同的Intent发来的请求。
下面给一个小例子:
public class MyIntentService extends IntentService{public MyIntentService() {super("aaa");}@Overrideprotected void onHandleIntent(Intent intent) {//经测试,IntentService里面是可以进行耗时的操作的.//IntentService使用队列的方式将请求的Intent加入队列,//然后开启一个worker thread(线程)来处理队列中的Intent.//对于异步的startService请求,IntentService会处理完成一个之后再处理第二个.System.out.println("睡眠开始");try {Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("睡眠结束");}}public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//连续两次启动IntentService,会发现应用程序不会阻塞,而且最重的是第二次的请求会在第一个请求结束之后运行//(这个证实了IntentService采用单独的线程每次只从队列中拿出一个请求进行处理)startService(new Intent(this,MyIntentService.class));startService(new Intent(this,MyIntentService.class));}}
0 0
- IntentService可处理耗时操作
- 开启处理耗时操作的方法–IntentService
- BroadcastReceiver处理耗时操作
- Swift-处理耗时操作
- 回调 处理耗时操作
- Service个人笔记4 --IntentService处理耗时任务
- ProgressDialog和Thread结合处理耗时操作
- ProcessDialog结合Thread处理耗时操作
- AsyncTask 使用后台线程处理耗时操作
- UI系统中的耗时操作处理
- iOS对耗时操作的处理方法
- MFC 处理耗时操作的一种办法
- ProcessDialog结合Thread处理耗时操作
- iOS处理耗时操作一种简单方法
- django 耗时操作处理办法 celery
- Android使用IntentService执行耗时任务
- IntentService执行耗时任务及源码解析
- Android IntentService 可执行耗时任务的Service
- 写一个方法void sanjiao(int a,int b,int c),判断三个参数是否能构成一个三角形,、。。。。。
- [leetcode 126] Word Ladder II
- Android蓝牙开发浅谈
- iOS UICollectionViewLayoutAttributes
- cocos2dx3.3 使用cocos studio2.0 导出的.csb文件
- IntentService可处理耗时操作
- 最小化运行批处理方法
- Binder---- Android 的IPC 通信机制
- 第六章:6.2.1 软件包管理 - rpm命令管理 - 包命名与依赖性
- Linux图形界面与字符界面切换
- 做人
- Android 开发之 ---- 底层驱动开发(一)
- css加载字体的跨域问题
- 并查集详解(转载)