在Android中Thread可是经常要用到的啊。

一、建立一个简单的Thread 初始界面如下:

点击Test按钮后,开启一个线程。这个线程,将“Hello World...”字符串修改成另外一个字符串。如下图所示。
布局文件如下: <? xml version = "1.0" encoding = "utf-8" ?>
< LinearLayout xmlns: android = "http://schemas.android.com/apk/res/android"
android: layout_width = "fill_parent"
android: layout_height = "fill_parent"
android: orientation = "vertical" >

< TextView
android: layout_width = "fill_parent"
android: layout_height = "wrap_content"
android: text = "@string/hello"
android: id = "@+id/txtShow" />

< Button android: id = "@+id/btnTest"
android: layout_width = "wrap_content"
android: layout_height = "wrap_content"
android: text = "Test" />
</ LinearLayout > 源代码如下: public class TestThreadActivity extends Activity {
private Handler mHandler;
private TextView mTextView;
private Button mButton;

@Override
public void onCreate( Bundle savedInstanceState) {
super . onCreate( savedInstanceState);
setContentView( R . layout . main);

mTextView = ( TextView) findViewById( R . id . txtShow);
mButton = ( Button) findViewById( R . id . btnTest);

mButton . setOnClickListener( new View . OnClickListener() {

public void onClick( View v) {
startThread();
}
});
}

private void startThread()
{
mHandler = new Handler(); //1秒刷新一次
mHandler . postDelayed ( changeText , 1000 );
}

private Runnable changeText = new Runnable () {
public void run ()
{
mTextView . setText ( "This is a thread example." );
}
};

} 这就是一个简单的线程例子了。 二、如何释放线程。 很简单。调用removeCallbacks就可以了。源代码如下: @Override
public void onDestroy()
{
if( mHandler != null)
{
try
{
mHandler . removeCallbacks( changeText);
}
catch( Exception e)
{
//do nothing, don't crash
}
}
super . onDestroy();
} 三、Thread+Message+Handler实现同样效果 和上面同样的效果。点击按钮后,改变文字。Layout不变,源代码如下: public class TestThreadActivity extends Activity {
private Handler mHandler;
private TextView mTextView;
private Button mButton;

@Override
public void onCreate( Bundle savedInstanceState) {
super . onCreate( savedInstanceState);
setContentView( R . layout . main);

mTextView = ( TextView) findViewById( R . id . txtShow);
mButton = ( Button) findViewById( R . id . btnTest);

mButton . setOnClickListener( new View . OnClickListener() {
public void onClick( View v) {
TestMessageThread thread = new TestMessageThread();
thread . start();

mHandler = new Handler()
{
@Override
public void handleMessage( Message msg)
{
mTextView . setText(( msg . obj ). toString());
}
};
}
});
}

private class TestMessageThread extends Thread
{
@Override
public void run()
{
//do something
Message msg = new Message();
msg . obj = "This is a thread example.";
//send message
mHandler . sendMessage( msg);
}
}
}

如何释放这里用到的线程呢?这就要用到线程的interrupt函数了。源代码如下: public class TestThreadActivity extends Activity {

private Handler mHandler = null;;
private TestMessageThread mThread = null;
private TextView mTextView;
private Button mButton;

@Override
public void onCreate( Bundle savedInstanceState) {
super . onCreate( savedInstanceState);
setContentView( R . layout . main);

mTextView = ( TextView) findViewById( R . id . txtShow);
mButton = ( Button) findViewById( R . id . btnTest);

mButton . setOnClickListener( new View . OnClickListener() {

public void onClick( View v) {
//startThread();
mThread = new TestMessageThread();
mThread . start();

mHandler = new Handler()
{
@Override
public void handleMessage( Message msg)
{
mTextView . setText(( msg . obj ). toString());
}
};
}
});
}

@Override
public void onDestroy()
{
super . onDestroy();
if( mThread != null)
{
try
{
mThread . interrupt();
}
catch( Exception e)
{
//do nothing, don't crash
}
}
}

private class TestMessageThread extends Thread
{
@Override
public void run()
{
//do something
Message msg = new Message();
msg . obj = "This is a thread example.";
//send message
mHandler . sendMessage( msg);
}
}
}

更多相关文章

  1. 【Android】Android 监听网络状态+源代码
  2. Android 子线程更新UI的几种方法
  3. android 线程 synchronized关键字
  4. Android里子线程真的不能刷新UI吗?
  5. android 多线程处理UI
  6. Android的线程使用来更新UI------Thread Handler Looper TimerTa

随机推荐

  1. Android系统中设置TextView的行间距(非行
  2. Android(安卓)3.0 r1 API中文文档(105)
  3. Style与Theme
  4. React Native 官方文档中文版(含最新Andr
  5. 随手记
  6. android SQLite应用
  7. Android核心模块及相关技术
  8. Android(安卓)统计图表引擎AChartEngine(
  9. Android将ListView逆时针旋转90°实现横
  10. [Android]笔记7-RelativeLayout布局