Android 三种线程使用方法

来源:互联网 发布:淘宝一件代发能赚钱吗 编辑:程序博客网 时间:2024/05/08 10:12

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 如下

这里写图片描述

三种线程方法成功调用

0 0
原创粉丝点击