android之IntentService种的实现

android之IntentService类的实现
package com.ghg.MyIntentService;

import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
/**
 * IntentService类的精简版,在(main线程)activity启动下载服务类,把需要下载的资源路径传给service,在service中,
 * 创建handler对象和消息对象,工作进程,然后通过handler对象把消息发送到和handler绑定的消息队列中(工作线程中),下载任务,
 * 下载结束后,把本次的启动的service关闭;
 * @author gaohong
 *
 */
public class MyIntentService extends Service {
	HandlerThread thread;
	Handler handler;
	
	/**
	 * 初始化工作线程和handler
	 */
	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();
		thread=new HandlerThread("workThread");
		System.out.println("在"+Thread.currentThread().getName()+"线程中创建工作线程");
		thread.start();
		Looper looper=thread.getLooper();
		handler=new Handler(looper){
			@Override
			public void handleMessage(Message msg) {
				// TODO Auto-generated method stub
				System.out.println("在"+Thread.currentThread().getName()+"中处理消息");
				onHandleIntent((Intent)msg.obj);
				stopSelf(msg.arg1);//下载结束后把该次的调用service结束
			}
		};
	}

	protected void onHandleIntent(Intent intent) {
		// TODO Auto-generated method stub
		String uri=intent.getStringExtra("uri");
		try {
			thread.sleep(3000);//相当于下载任务;
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/*
	 * 创建消息,用handler发送
	 * 
	 */
	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		// TODO Auto-generated method stub
		Message msg=Message.obtain();
		msg.obj=intent;
		msg.arg1=startId;
		System.out.println("在"+Thread.currentThread().getName()+"线程中发送消息");
		handler.sendMessage(msg);
		return super.onStartCommand(intent, flags, startId);
	}
	
	@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		thread.quit();
		super.onDestroy();
	}

	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		return null;
	}
	

}

activity中的代码:

package com.ghg.MyIntentService;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class Day1305_MyIntentServiceActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Intent intent=new Intent(this, MyIntentService.class);
        intent.putExtra("uri", "http://192.168.1.162:8080/musiconline/musics/001.mp3");
        startService(intent);
    }
}