Android 三种线程使用方法
2015-03-06 11:10
274 查看
Android中三种线程使用方法
第一种:Thread
示例代码如下
第二种:runOnUiThread
示例代码如下
第三种:Handler
示例代码如下
下面看看在项目中如何使用上面三种线程
创建一个Android项目
我创建三个按钮,分别调用不同种类的线程,布局文件如下(不做过多解释)
主Activity代码如下
运行项目
界面如下
分别点击 one、two、three按钮,查看 LogCat 如下
三种线程方法成功调用
第一种: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 如下
三种线程方法成功调用
相关文章推荐
- Android 中三种使用线程的方法
- 使用线程创建的三种方法实现j2me联网(PS:我想做android!NND!)
- Android 中三种使用线程的方法
- Android 中三种使用线程的方法
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- Code Fragment-Android在其他线程可以使用方法在UI线程执行UI相关
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- Android 非UI线程使用View.post()方法一处潜在的内存泄漏
- Android中线程的使用方法
- Android中Handler的使用方法——在子线程中更新界面
- Android中Handler的使用方法——在子线程中更新界面
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- Android中Handler的使用方法——在子线程中更新界面
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- Android的消息机制,用Android线程间通信的Message机制,Android中Handler的使用方法——在子线程中更新界面,handler机制
- Android 非UI线程使用View.post()方法一处潜在的内存泄漏