您的位置:首页 > 移动开发 > Android开发

Android 三种线程使用方法

2015-03-06 11:10 274 查看
Android中三种线程使用方法

第一种:Thread

示例代码如下

new Thread(new Runnable() {
@Override
public void run() {
//在此调用需要在线程中调用的方法
}
}).start();


第二种:runOnUiThread

示例代码如下

runOnUiThread(new Runnable() {
@Override
public void run() {
//在此调用需要在线程中调用的方法
}
});


第三种:Handler

示例代码如下

Handler hhh = new Handler();
hhh.post(new Runnable() {
@Override
public void run() {
// 在此调用需要在线程中调用的方法
}
});


下面看看在项目中如何使用上面三种线程

创建一个Android项目

我创建三个按钮,分别调用不同种类的线程,布局文件如下(不做过多解释)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button
android:id="@+id/One"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/One" />

<Button
android:id="@+id/Two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Two" />

<Button
android:id="@+id/Three"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Three" />

</LinearLayout>


主Activity代码如下

package com.example.testunity;

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 MainActivity extends Activity {
//定义三个按钮
private Button OneBtn;
private Button TwoBtn;
private Button ThreeBtn;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//设置视图
setContentView(R.layout.main);

//获取按钮
OneBtn = (Button)this.findViewById(R.id.One);
//给按钮添加点击监听事件
OneBtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// 调用我的第一种方法
One();
}
});

//获取按钮
TwoBtn = (Button)this.findViewById(R.id.Two);
//给按钮添加点击监听事件
TwoBtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// 调用我的第二种方法
Two();
}
});

//获取按钮
ThreeBtn = (Button)this.findViewById(R.id.Three);
//给按钮添加点击监听事件
ThreeBtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// 调用我的第三种方法
Three();
}
});
}

//第一种 Thread 使用方法
private void One() {
//Thread 类中有很多方法,在此仅使用一种代码示范
//有兴趣的自己去查更多的Thread方法
new Thread(new Runnable() {

@Override
public void run() {
// 在此处调用自己的方法
// 打印一个 Tag 为 "AAA"的日志
Log.i("AAA", "One ");
}
}).start();
}

//第二种 runOnUiThread
private void Two() {
// 更多 runOnUiThread 使用方法自己查询
runOnUiThread(new Runnable() {

@Override
public void run() {
// 在此处调用自己的方法
// 打印一个 Tag 为 "AAA"的日志
Log.i("AAA", "TWO");
}
});
}

// 第三种   Handler
private void Three() {
//在此写了 Handler 的三种使用方法, Handler 类有很多方法,

///////////////////////////////////////
Handler handler = new Handler();
Runnable runnable = new Runnable() {

@Override
public void run() {
// 在此处调用自己的方法
// 打印一个 Tag 为 "AAA"的日志
Log.i("AAA", "THREE 1");
}
};
//需要调用下面代码,启动 runnable 线程
handler.post(runnable);
///////////////////////////////////////

/////////////////////////////////////
Handler hhh = new Handler();
hhh.post(new Runnable() {

@Override
public void run() {
// 在此处调用自己的方法
// 打印一个 Tag 为 "AAA"的日志
Log.i("AAA", "THREE 2");
}
});
//////////////////////////////////////

//////////////////////////////////////
//该种使用方法需要在外部传入一个消息,根据传入消息的内容
//判断调用什么方法
Handler hh = new Handler() {

@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);

// 判断传入的消息,选择调用
switch (msg.what) {
case 1:
// 打印一个 Tag 为 "AAA"的日志
Log.i("AAA", "THREE 3");
break;
case 2:
break;
}
}
};
//获取 hh 的message
Message message = hh.obtainMessage();
//设置消息值
message.what = 1;
////////////////////////////////////
}
}


运行项目

界面如下



分别点击 one、two、three按钮,查看 LogCat 如下



三种线程方法成功调用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐