Android中的好多应用,如UI更新,游戏开发,和耗时的操作都需要用到多线程的知识。而对Android中的线程机制好多人多觉得学习有困难。下面我们就一起来学习一下。
谈及Android中的线程我们会涉及到如下几个概念:
1. Handler 2. Looper 3. HandlerThread 4.Message 5. MessageQueue
下面我们由浅入深来探讨一下。我们用java多线程中很经典的例子计时器为例。我们要编写实现一个计时器,该如何编写呢?按照java中多线程的思路,我们很自然的会这样实现
代码如下:
package xuan.blog.hander;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class clockActivity extends Activity {
/** Called when the activity is first created. */
private String TAG="clockActivity";
private Button endButton;
private TextView textView;
private Thread clockThread;
private int timer=0;
private boolean isRunning=true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
endButton=(Button)findViewById(R.id.endBtn);
textView=(TextView)findViewById(R.id.textview);
endButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
isRunning=false;
}
});
clockThread=new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
while(isRunning){
try{
Thread.currentThread().sleep(1000);
timer++;
textView.setText("走了"+timer+"秒");
Log.d(TAG,"time:"+timer);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}});
clockThread.start();
}
}
我们用Thread的构造方法创建了一个线程对象,并启动了该线程,在该线程中来计算并更新textView。