WEB开发网
开发学院手机开发Android 开发 Android 下的多线程 阅读

Android 下的多线程

 2010-04-19 16:12:00 来源:WEB开发网   
核心提示:Looper.prepare();//do something}Looper.loop();}所以很多人都是这样做的:我直接在子线程中新建handle,然后在子线程中发送消息,Android 下的多线程(2),这样的话就失去了我们多线程的意义了,class myThread extends Thread{private

Looper.prepare();

//do something

}

Looper.loop();

}

所以很多人都是这样做的:我直接在子线程中新建handle,然后在子线程中发送消息,这样的话就失去了我们多线程的意义了。

class myThread extends Thread{

private EHandler mHandler ;

public void run() {

Looper myLooper, mainLooper;

myLooper = Looper.myLooper ();

mainLooper = Looper.getMainLooper ();

String obj;

if (myLooper == null ){

mHandler = new EHandler(mainLooper);

obj = "current thread has no looper!" ;

}

else {

mHandler = new EHandler(myLooper);

obj = "This is from current thread." ;

}

mHandler .removeMessages(0);

Message m = mHandler .obtainMessage(1, 1, 1, obj);

mHandler .sendMessage(m);

}

}

可以让其他的线程来控制我们的handle,可以把 private EHandler mHandler ;放在外面,这样我们的发消息和处理消息都可以在外面来定义,这样增加程序代码的美观,结构更加清晰。

对如任何的Handle,里面必须要重载一个函数

public void handleMessage(Message msg)

这个函数就是我们的消息处理,如何处理,这里完全取决于你,然后通过 obtainMessage和 sendMessage等来生成和发送消息, removeMessages(0)来清除消息队列。Google真是太智慧了,这种框架的产生,我们写代码更加轻松了。

有的时候,我们的子线程想去改变UI了,这个时候千万不要再子线程中去修改,获得UI线程的Looper,然后发送消息即可。

我们来看看高焕堂的代码:

// class ac01 extends Activity {

// ………

public void onClick(View v) {

switch (v.getId()){

case 101:

t = new myThread();

t .start();

break ;

case 102:

finish();

break ;

}

}

//------------------------------------------------------

上一页  1 2 3 4 5  下一页

Tags:Android 线程

编辑录入:coldstar [复制链接] [打 印]
赞助商链接