121 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| package com.novelbook.android.service;
 | |
| 
 | |
| import android.app.IntentService;
 | |
| import android.content.Intent;
 | |
| import android.graphics.Bitmap;
 | |
| import android.graphics.BitmapFactory;
 | |
| import android.os.IBinder;
 | |
| import android.os.Message;
 | |
| import android.util.Log;
 | |
| 
 | |
| 
 | |
| import java.io.BufferedInputStream;
 | |
| import java.io.IOException;
 | |
| import java.net.HttpURLConnection;
 | |
| import java.net.URL;
 | |
| 
 | |
| 
 | |
| public  class MyIntentService extends IntentService {
 | |
|     public static final String DOWNLOAD_URL="download_url";
 | |
|     public static final String INDEX_FLAG="index_flag";
 | |
|     public static UpdateUI updateUI;
 | |
| 
 | |
|     final String TAG ="testIntentService";
 | |
| 
 | |
|     public static void setUpdateUI(UpdateUI updateUIInterface){
 | |
|         updateUI=updateUIInterface;
 | |
|     }
 | |
| 
 | |
|     public MyIntentService(){
 | |
|         super("MyIntentService");
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 实现异步任务的方法
 | |
|      * @param intent Activity传递过来的Intent,数据封装在intent中
 | |
|      */
 | |
|     @Override
 | |
|     protected void onHandleIntent(Intent intent) {
 | |
| 
 | |
| 
 | |
|         //在子线程中进行网络请求
 | |
|         Bitmap bitmap=downloadUrlBitmap(intent.getStringExtra(DOWNLOAD_URL));
 | |
|         Message msg1 = new Message();
 | |
|         msg1.what = intent.getIntExtra(INDEX_FLAG,0);
 | |
|         msg1.obj =bitmap;
 | |
|         //通知主线程去更新UI
 | |
|         if(updateUI!=null){
 | |
|             updateUI.updateUI(msg1);
 | |
|         }
 | |
|         //mUIHandler.sendMessageDelayed(msg1,1000);
 | |
| 
 | |
|         Log.d(TAG,"onHandleIntent");
 | |
|     }
 | |
|     //----------------------重写一下方法仅为测试------------------------------------------
 | |
|     @Override
 | |
|     public void onCreate() {
 | |
|         Log.d(TAG,"onCreate");
 | |
|         super.onCreate();
 | |
|     }
 | |
| 
 | |
|     @Override
 | |
|     public void onStart(Intent intent, int startId) {
 | |
|         super.onStart(intent, startId);
 | |
|         Log.d(TAG,"onStart");
 | |
|     }
 | |
| 
 | |
|     @Override
 | |
|     public int onStartCommand(Intent intent, int flags, int startId) {
 | |
|         Log.d(TAG,"onStartCommand");
 | |
|         return super.onStartCommand(intent, flags, startId);
 | |
| 
 | |
|     }
 | |
| 
 | |
|     @Override
 | |
|     public void onDestroy() {
 | |
|         Log.d(TAG,"onDestroy");
 | |
|         super.onDestroy();
 | |
|     }
 | |
| 
 | |
|     @Override
 | |
|     public IBinder onBind(Intent intent) {
 | |
|         Log.d(TAG,"onBind");
 | |
|         return super.onBind(intent);
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public interface UpdateUI{
 | |
|         void updateUI(Message message);
 | |
|     }
 | |
| 
 | |
| 
 | |
|     private Bitmap downloadUrlBitmap(String urlString) {
 | |
|         HttpURLConnection urlConnection = null;
 | |
|         BufferedInputStream in = null;
 | |
|         Bitmap bitmap=null;
 | |
|         try {
 | |
|             final URL url = new URL(urlString);
 | |
|             urlConnection = (HttpURLConnection) url.openConnection();
 | |
|             in = new BufferedInputStream(urlConnection.getInputStream(), 8 * 1024);
 | |
|             bitmap= BitmapFactory.decodeStream(in);
 | |
|         } catch (final IOException e) {
 | |
|             e.printStackTrace();
 | |
|         } finally {
 | |
|             if (urlConnection != null) {
 | |
|                 urlConnection.disconnect();
 | |
|             }
 | |
|             try {
 | |
|                 if (in != null) {
 | |
|                     in.close();
 | |
|                 }
 | |
|             } catch (final IOException e) {
 | |
|                 e.printStackTrace();
 | |
|             }
 | |
|         }
 | |
|         return bitmap;
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 |