android代码 java代码。 Handler Post与线程Thread问题

Mars老师的视频,http://v.youku.com/v_show/id_XNjc5OTE2OTA4.html?f=19341506求分析一下点了一下Button后整... Mars老师的视频,http://v.youku.com/v_show/id_XNjc5OTE2OTA4.html?f=19341506
求分析一下点了一下Button后整个程序的执行过程。
有一点不明白的是,明明mt.start()都已经执行了,却没有开辟新的线程呢?
我知道在Looper的loop()方法中有这样的调用:message.calback.run();整个程序中都没有Looper的代码,loop()方法是在什么时候执行的呢?
很想弄清这个程序的执行过程,感觉这样对理解上面的问题有很大的帮助!非常感谢各位。
package com.xxx.handerpost;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

private Button button;
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

button = (Button)findViewById(R.id.buttonId);//布局文件中定义了Button
button.setOnClickListener(new OnClickListener() { //这是一个匿名类
@Override
public void onClick(View v) {
MyThread mt = new MyThread();
mt.start();
}
});

}

class MyThread extends Thread{
@Override
public void run() {
Runnable r = new Runnable(){ //这是一个匿名类
@Override
public void run() {
System.out.println("r.unn() Thread: " + Thread.currentThread().getName());
}
};
handler.post(r);
}
}
}
展开
 我来答
醉吻天堂
2015-07-31 · 超过35用户采纳过TA的回答
知道答主
回答量:79
采纳率:0%
帮助的人:54万
展开全部
首先你要明白,handler具体有什么用。hander的具体作用是:主要接受子线程发送的数据, 并用此数据配合主线程更新UI。因为在安卓中所有的耗时操作都不应该放在主线程中来执行,不然有可能会造成主线程的阻塞,所以一般都是新开一个线程。而线程之间是如何通信的呢。用的就是handler,它是用来线程间通信的,这点你需要搞明白。

而Looper的作用是从消息列表中不断的去取出消息来执行,一个消息队列就必定会有一个looper。

而你的这串代码中,没有涉及的更改UI,也没有涉及到线程间的消息传输,所以肯定用不到handler。

希望在学习安卓的时候,先把概念搞清楚,不然你会学习的很累。我也是做安卓的开发,也是自学的。有需要可以继续提问,知无不言言无不尽。纯手打,望采纳。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式