Android之Service与IntentService的比较
2011-12-29 10:34
337 查看
稍微翻译理一理,这里主要是说IntentService使用队列的方式将请求的Intent加入队列,然后开启一个worker thread(线程)来处理队列中的Intent,对于异步的startService请求,IntentService会处理完成一个之后再处理第二个,每一个请求都会在一个单独的worker thread中处理,不会阻塞应用程序的主线程,这里就给我们提供了一个思路,如果有耗时的操作与其在Service里面开启新线程还不如使用IntentService来处理耗时操作。下面给一个小例子:
1.Service:
2.IntentService:
测试主程序:
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; } } |
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 { /** Called when the activity is first created. */ @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)); } } |
相关文章推荐
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android中Service与IntentService的使用比较 2015-06-26 10:06 6人阅读 评论(0) 收藏
- Android之Service与IntentService的比较 .
- Android之Service与IntentService的比较
- Android中Service与IntentService的使用比较
- android拾遗——Android之Service与IntentService的比较
- Android中Service与IntentService的使用比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android中Service与IntentService的使用比较
- Android温习:Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较
- Android之Service与IntentService的比较