IntentService有何优点?
来源:互联网 发布:matlab 遗传算法 袋鼠 编辑:程序博客网 时间:2024/04/29 14:00
IntentService使用队列的方式将请求的Intent加入队列,然后开启一个worker thread(线程)来处理队列中的Intent,对于异步的startService请求,IntentService会处理完成一个之后再处理第二个,每一个请求都会在一个单独的worker thread中处理,不会阻塞应用程序的主线程,这里就给我们提供了一个思路,如果有耗时的操作与其在Service里面开启新线程还不如使用IntentService来处理耗时操作。
下面就来测试一下:
1.Service:
package com.zhf.service;
import Android.app.Service;
import Android.content.Intent;
import Android.os.IBinder;
public class MyService extends Service {
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
//经测试,Service里面是不能进行耗时的操作的,必须要手动开启一个工作线程来处理耗时操作
System.out.println("onStart");
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("睡眠结束");
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
2.IntentService:
package com.zhf.service;
import Android.app.IntentService;
import Android.content.Intent;
public class MyIntentService extends IntentService {
public MyIntentService() {
super("yyyyyyyyyyy");
}
@Override
protected void onHandleIntent(Intent intent) {
// 经测试,IntentService里面是可以进行耗时的操作的
//IntentService使用队列的方式将请求的Intent加入队列,然后开启一个worker thread(线程)来处理队列中的Intent
//对于异步的startService请求,IntentService会处理完成一个之后再处理第二个
System.out.println("onStart");
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("睡眠结束");
}
}
测试主程序:
package com.zhf.service;
import Android.app.Activity;
import Android.content.Intent;
import Android.os.Bundle;
public class ServiceDemoActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startService(new Intent(this,MyService.class));//主界面阻塞,最终会出现Application not responding
//连续两次启动IntentService,会发现应用程序不会阻塞,而且最重的是第二次的请求会再第一个请求结束之后运行(这个证实了IntentService采用单独的线程每次只从队列中拿出一个请求进行处理)
startService(new Intent(this,MyIntentService.class));
startService(new Intent(this,MyIntentService.class));
}
}
原文链接:http://www.linuxidc.com/Linux/2011-10/46075p2.htm
- IntentService有何优点?
- IntentService有何优点?
- IntentService有何优点?
- 什么是IntentService?有何优点?
- IntentService及其优点
- 什么是软件测试用例预演 有何优点?
- 请说出const与#define相比,有何优点?
- IntentService的使用与优点
- 使用文件描述符存取打开文件与直接使用文件名相比有何优点?
- Java匿名内部类怎样创建,有何作用和优点,创建线程怎样使用匿名内部类
- php有什么优点?
- ios有哪些优点
- 十二生肖都有优点。
- arduino 有什么优点
- jquery有哪些优点?
- struts2有哪些优点?
- 接口有什么优点
- 何有才
- hadoop mapreduce wordcount测试用例
- Extjs-实用工具 处理导航按键 Ext.KeyNev
- 冒泡排序
- 嵌入式软件开发------指针和内存释放的问题分析
- Ubuntu下手机连不到eclipse的解决办法
- IntentService有何优点?
- 性能测试 工具 TProfile 代码简析
- Extjs-实用工具 为对象绑定按键功能 Ext.KeyMap
- new delete重载
- 安装cucumber 后出现的问题
- 【insigma】Socket
- Windows7下使用Dev-C 编译 JNI
- 从DLL中导出变量 ——DLL入门浅析
- 如何判断fork之后的子进程是否已经结束