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; | ||
|  |     } | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | 
 |