Android 线程 thread 两种实现方法
原文链接: http://blog.csdn.net/boyupeng/article/details/6208072
这篇文章中有三点需要提前说明一下,
一:
在android中有两种实现线程thread的方法:
一种是,扩展java.lang.Thread类
另一种是,实现Runnable接口
二:
Thread类代表线程类,它的两个最主要的方法是:
run()——包含线程运行时所执行的代码
Start()——用于启动线程
三:
Handler 机制,它是Runnable和Activity交互的桥梁,在run方法中发送Message,在Handler里,通过不同的Message执行不同的任务。
下面分别给出两种线程的实现方法,其一,扩展java.lang.Thread类,也就是把run()方法写到线程里面:
- package com.my;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class Demo_For_Copy extends Activity
- {
- public Button button;
- public Handler mHandler=new Handler()
- {
- public void handleMessage(Message msg)
- {
- switch(msg.what)
- {
- case 1:
- button.setText(R.string.text2);
- break;
- default:
- break;
- }
- super.handleMessage(msg);
- }
- };
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- button=(Button)findViewById(R.id.button);
- Thread thread=new Thread(new Runnable()
- {
- @Override
- public void run()
- {
- Log.e("1111", "111111111");
- // TODO Auto-generated method stub
- Message message=new Message();
- message.what=1;
- mHandler.sendMessage(message);
- }
- });
- thread.start();
- }
- }
其二,实现Runnable接口,让类实现Runnable接口,然后把run方法单独提出来:
- package com.my;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.LinearLayout;
- public class Title_Change_Demo extends Activity implements Runnable
- {
- public Button button;
- public LinearLayout my_layout;
- public Handler mHandler=new Handler()
- {
- public void handleMessage(Message msg)
- {
- switch(msg.what)
- {
- case 1:
- button.setText(R.string.text2);
- break;
- default:
- break;
- }
- my_layout.invalidate();
- super.handleMessage(msg);
- }
- };
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- button=(Button)findViewById(R.id.button);
- my_layout=(LinearLayout)findViewById(R.id.my_layout);
- Thread thread=new Thread(this);
- thread.start();
- }
- @Override
- public void run()
- {
- Log.e("ok", "111111111");
- // TODO Auto-generated method stub
- Message message=new Message();
- message.what=1;
- mHandler.sendMessage(message);
- }
- }