线程进行多处理的选择。
实现线程的3种写法:
1.新建类去继承Thread:
public class MyThread extends Thread { @Override public void run() { //实现的逻辑 } } //调用方法: new MyThread().start();
2.新建类实现Runnable接口:
public class MyThread implements Runnable{ @Override public void run() { } } //调用方法: new Thread(new MyThread()).start();
3.匿名类实现:
new Thread(new Runnable() { @Override public void run() { //代码 } }).start();
创建线程后,调用start()方法,run()方法就会运行。
线程异步消息处理机制:
线程中无法实现ui的操作,所以通过异步消息处理机制实现ui操做在主线程操作。
例子:(来自第一行代码)
public class MainActivity extends Activity { private Button btn; private TextView textView; private Handler handler = new Handler(){
//重写handleMessage方法,里面实现ui的操作 @Override public void handleMessage(Message msg) { textView.setText("change"); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.btn); textView = (TextView) findViewById(R.id.txv); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { new Thread(new Runnable() { @Override public void run() { Message message = new Message(); message.what = 1; //message 的标志,handleMessage()中可以通过标准识别message handler.sendMessage(message); } }).start(); } }); } }
此外,message还有arg1,arg2来携带整形参数,obj携带一个Object对象。
PS:很多时候自己忘了写现线程后面的.start()导致。。。。。