读书人

在Activity中创建了一个handler但在

发布时间: 2013-07-27 22:21:00 作者: rapoo

在Activity中创建了一个handler,但在handler中取线程ID时取得的却不是Activity的ID号,请教原因。
代码如下:


public class MainActivity extends Activity implements Runnable{

Handler handler = new Handler(){
public void handleMessage(Message msg){
S.p(Thread.currentThread().getId()+"-------------Handler");
}
};

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
S.p(Thread.currentThread().getId()+"-------------MainActivity");

new Thread(this).start();
}

@Override
public void run() {

S.p(Thread.currentThread().getId()+"-------------New Thread");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.handleMessage(handler.obtainMessage());
}
}

[解决办法]
引用:
引用:

主线程拥有自己的消息列队,一般线程创建时没有自己的消息列队,消息处理时就在主线程中完成,如果线程中使用Looper.prepare()和Looper.loop()创建了消息队列就可以让消息处理在该线程中完成。

Java code


public class MainActivity extends Activity implement……


不仔细看还没看到呢 :-)

你用错了handler.handleMessage(handler.obtainMessage());
改成handler.sendMessage(handler.obtainMessage());


不然相当于子函数调用了。

读书人网 >Android

热点推荐