zoukankan      html  css  js  c++  java
  • [Android]Thread两种实现方法

    一:

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

    一种是,扩展java.lang.Thread类
    另一种是,实现Runnable接口

    二:
    Thread类代表线程类,它的两个最主要的方法是:
    run()——包含线程运行时所执行的代码
    Start()——用于启动线程

    三:

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

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

    package com.my;
    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 Demo_For_Copy extends Activity
    {
    public Button button;

    public Handler mHandler=new Handler()
    {
    public void handleMessage(Message msg)
    {
    switch(msg.what)
    {
    case 1:
    button.setText(R.string.text2);
    break;
    default:
    break;
    }
    super.handleMessage(msg);
    }
    };

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    button=(Button)findViewById(R.id.button);

    Thread thread=new Thread(new Runnable()
    {
    @Override
    public void run()
    {
    Log.e("1111", "111111111");
    // TODO Auto-generated method stub
    Message message=new Message();
    message.what=1;
    mHandler.sendMessage(message);
    }
    });
    thread.start();
    }
    }

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

    package com.my;
    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;
    import android.widget.LinearLayout;
    public class Title_Change_Demo extends Activity implements Runnable
    {
    public Button button;
    public LinearLayout my_layout;

    public Handler mHandler=new Handler()
    {
    public void handleMessage(Message msg)
    {
    switch(msg.what)
    {
    case 1:
    button.setText(R.string.text2);
    break;
    default:
    break;
    }
    my_layout.invalidate();
    super.handleMessage(msg);
    }
    };

    /** Called when the activity is first created. */
    @Override
    public void onCreate(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=new Thread(this);
    thread.start();
    }

    @Override
    public void run()
    {
    Log.e("ok", "111111111");
    // TODO Auto-generated method stub
    Message message=new Message();
    message.what=1;
    mHandler.sendMessage(message);
    }
    }

  • 相关阅读:
    JQuery:自动触发事件
    SQL Server 取日期时间部分
    使用IIS 7.0 / 7.5 时配置HttpModules需要注意
    Winform:中直接打开指定文件
    jQuery 时间获取扩展
    喵星史话(一)——猫的起源
    2013年的环法
    ie8下奇怪的问题:float:left之后,右侧的div会影响左侧
    虚假IP和DNS污染
    android中setBackgroundResource和setBackgroundDrawable和用法
  • 原文地址:https://www.cnblogs.com/webapplee/p/3771866.html
Copyright © 2011-2022 走看看