稍微翻译理一理,这里主要是说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);  
 
-           
 
-         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) {  
 
-           
 
-           
 
-           
 
-         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));  
 
-           
 
-         startService(new Intent(this,MyIntentService.class));  
 
-         startService(new Intent(this,MyIntentService.class));  
 
-     }  
 
- }  
 
  |