萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 安卓開發 >> android 的handler 機制簡介

android 的handler 機制簡介

這是我們為大家提供的一篇介紹android 的handler 機制的文章,接下來就讓我們一起來了解一下吧!

在android中,用戶自己創建的工作線程和UI主線程是不同的線程。handler 是android中一種消息的異步處理機制。在用戶未給自己的工作線程創建Looper,即默認情況下,handler 會在主線程的Looper下進行消息處理,這時handler占用主線程。

當用戶在啟動自己的工作線程時調用Looper.prepare(),這時創建了自己的Looper,當我們利用handler進行消息處理時,自己的工作線程將和主線程不是同一個線程。代碼如下:

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.os.Looper;

import android.os.Message;

import android.util.Log;

import android.view.View;

import android.widget.Button;

public class Demo1 extends Activity{

private Button button1,button2;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.main2);

button1=(Button)findViewById(R.id.button1);

button1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

MyThread myThread=new MyThread();

myThread.start();

Log.i("main Thread UI id:",Thread.currentThread().getId()+"");

}

});

}

class MyHandler extends Handler {

public MyHandler(Looper looper){

super(looper);

}

@Override

public void handleMessage(Message msg) {

// TODO Auto-generated method stub

super.handleMessage(msg);

Log.i("handler thread id:",Thread.currentThread().getId()+"");

}

}

class MyThread extends Thread {

private MyHandler myHandler;

private  String obj;

public void run(){

Looper myLopper ;

Looper.prepare();

myLopper=Looper.myLooper();

myHandler=new MyHandler(myLopper);

Log.i("my thread id:",""+Thread.currentThread().getId());

obj="my thread";

myHandler.removeMessages(0);

Message message=myHandler.obtainMessage(1,1,1,obj);

myHandler.sendMessage(message);

Looper.loop();

}

}

}

運行結果如下:

I/main Thread UI id:(  725): 1

I/my thread id:(  725): 8

I/handler thread id:(  725): 8

由此可見,當我們創建自己的Looper時,系統的handler將占用用戶的工作線程。

以上就是我們為大家提供的對android 的handler 機制的相關介紹,希望對大家有所幫助!

copyright © 萬盛學電腦網 all rights reserved