一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Android 线程thread的两种实现方法

时间:2017-05-04 编辑:简简单单 来源:一聚教程网

这篇文章中有三点需要提前说明一下,

一:在android中有两种实现线程thread的方法:

一种是,扩展java.lang.Thread类

另一种是,实现Runnable接口

二:Thread类代表线程类,它的两个最主要的方法是:

run()――包含线程运行时所执行的代码

Start()――用于启动线程

三: Handler 机制,它是Runnable和Activity交互的桥梁,在run方法中发送Message,在Handler里,通过不同的Message执行不同的任务。

下面分别给出两种线程的实现方法,其一,扩展java.lang.Thread类,也就是把run()方法写到线程里面:

 

 代码如下复制代码

packagecom.my;

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.os.Handler;

importandroid.os.Message;

importandroid.util.Log;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

publicclassDemo_For_CopyextendsActivity

{

  publicButton button;

    

  publicHandler mHandler=newHandler()

  {

    publicvoidhandleMessage(Message msg)

    {

      switch(msg.what)

      {

      case1:

        button.setText(R.string.text2);

        break;

      default:

        break;   

      }

      super.handleMessage(msg);

    }

  };

    

  /** Called when the activity is first created. */

  @Override

  publicvoidonCreate(Bundle savedInstanceState)

  {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    button=(Button)findViewById(R.id.button);

  

    Thread thread=newThread(newRunnable()

    {

      @Override

      publicvoidrun()

      {

        Log.e("1111","111111111");

        // TODO Auto-generated method stub

        Message message=newMessage();

        message.what=1;

        mHandler.sendMessage(message);

      }

    });

    thread.start();

  }

}

 

其二,实现Runnable接口,让类实现Runnable接口,然后把run方法单独提出来:

 

 代码如下复制代码

packagecom.my;

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.os.Handler;

importandroid.os.Message;

importandroid.util.Log;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

importandroid.widget.LinearLayout;

publicclassTitle_Change_DemoextendsActivityimplementsRunnable

{

  publicButton button;

  publicLinearLayout my_layout;

    

  publicHandler mHandler=newHandler()

  {

    publicvoidhandleMessage(Message msg)

    {

      switch(msg.what)

      {

      case1:

        button.setText(R.string.text2);

        break;

      default:

        break;     

      }

      my_layout.invalidate();

      super.handleMessage(msg);

    }

  };

    

  /** Called when the activity is first created. */

  @Override

  publicvoidonCreate(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=newThread(this);

    thread.start();

  }

    

  @Override

  publicvoidrun()

  {

    Log.e("ok","111111111");

    // TODO Auto-generated method stub

    Message message=newMessage();

    message.what=1;

    mHandler.sendMessage(message);

  }

}

 

热门栏目