原文链接: http://blog.csdn.net/boyupeng/article/details/6208072

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

一:

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

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

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

三:

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

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

  1. package com.my;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.os.Handler;
  5. import android.os.Message;
  6. import android.util.Log;
  7. import android.view.View;
  8. import android.view.View.OnClickListener;
  9. import android.widget.Button;
  10. public class Demo_For_Copy extends Activity
  11. {
  12. public Button button;
  13. public Handler mHandler=new Handler()
  14. {
  15. public void handleMessage(Message msg)
  16. {
  17. switch(msg.what)
  18. {
  19. case 1:
  20. button.setText(R.string.text2);
  21. break;
  22. default:
  23. break;
  24. }
  25. super.handleMessage(msg);
  26. }
  27. };
  28. /** Called when the activity is first created. */
  29. @Override
  30. public void onCreate(Bundle savedInstanceState)
  31. {
  32. super.onCreate(savedInstanceState);
  33. setContentView(R.layout.main);
  34. button=(Button)findViewById(R.id.button);
  35. Thread thread=new Thread(new Runnable()
  36. {
  37. @Override
  38. public void run()
  39. {
  40. Log.e("1111", "111111111");
  41. // TODO Auto-generated method stub
  42. Message message=new Message();
  43. message.what=1;
  44. mHandler.sendMessage(message);
  45. }
  46. });
  47. thread.start();
  48. }
  49. }

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

  1. package com.my;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.os.Handler;
  5. import android.os.Message;
  6. import android.util.Log;
  7. import android.view.View;
  8. import android.view.View.OnClickListener;
  9. import android.widget.Button;
  10. import android.widget.LinearLayout;
  11. public class Title_Change_Demo extends Activity implements Runnable
  12. {
  13. public Button button;
  14. public LinearLayout my_layout;
  15. public Handler mHandler=new Handler()
  16. {
  17. public void handleMessage(Message msg)
  18. {
  19. switch(msg.what)
  20. {
  21. case 1:
  22. button.setText(R.string.text2);
  23. break;
  24. default:
  25. break;
  26. }
  27. my_layout.invalidate();
  28. super.handleMessage(msg);
  29. }
  30. };
  31. /** Called when the activity is first created. */
  32. @Override
  33. public void onCreate(Bundle savedInstanceState)
  34. {
  35. super.onCreate(savedInstanceState);
  36. setContentView(R.layout.main);
  37. button=(Button)findViewById(R.id.button);
  38. my_layout=(LinearLayout)findViewById(R.id.my_layout);
  39. Thread thread=new Thread(this);
  40. thread.start();
  41. }
  42. @Override
  43. public void run()
  44. {
  45. Log.e("ok", "111111111");
  46. // TODO Auto-generated method stub
  47. Message message=new Message();
  48. message.what=1;
  49. mHandler.sendMessage(message);
  50. }
  51. }

Android 线程 thread 两种实现方法的更多相关文章

  1. Android—— 线程 thread 两种实现方法!(转)

    原文地址:http://blog.csdn.net/boyupeng/article/details/6208072 这篇文章中有三点需要提前说明一下, 一: 在android中有两种实现线程thre ...

  2. android studio gradle 两种更新方法更新

    android studio gradle 两种更新方法更新 第一种.Android studio更新 第一步:在你所在项目文件夹下:你项目根目录gradlewrappergradle-wrapper ...

  3. 【转载】JAVA中线程的两种实现方法-实现Runnable接口和继承Thread类

    转自: http://blog.csdn.net/sunguangran/article/details/6069317 非常感谢原作者,整理的这么详细. 在java中可有两种方式实现多线程,一种是继 ...

  4. Android 广播机制(两种注册方法)与中断广播

    两种注册类型的区别是: 1)第一种不是常驻型广播,也就是说广播跟随activity的生命周期.注意: 在activity结束前,移除广播接收器. 2)第二种是常驻型,也就是说当应用程序关闭后,如果有信 ...

  5. 更新Android Studio,提示后直接点更新即可。gradle 两种更新方法,我用的第二种:手动添加gradle

    直接更新即可. 更新完毕后,随即会让你更新gradle,但是会一直更新一直更新...... 解决方法: 第一种方法: 手动下载Android Studio 对应的 gradle版本,然后设置一下即可. ...

  6. 并发编程 - 线程 - 1.开启线程的两种方式/2.进程与线程的区别/3.Thread对象的其他属性或方法/4.守护线程

    1.开启线程的两种方式: 进程,线程: 进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合)而线程才是cpu上的执行单位) 1.同一个进程内的多个线程共享该进程内的地址资源 2.创建线 ...

  7. 创建线程的两种方式比较Thread VS Runnable

    1.首先来说说创建线程的两种方式 一种方式是继承Thread类,并重写run()方法 public class MyThread extends Thread{ @Override public vo ...

  8. python 之 并发编程(线程理论,开启线程的两种方式,进程与线程的区别,线程对象的其他方法)

    9.9 线程理论 1.什么是线程 线程指的是一条流水线的工作过程 进程根本就不是一个执行单位,进程其实是一个资源单位,一个进程内自带一个线程,线程才是执行单位 2.进程VS线程 同一进程内的线程们共享 ...

  9. 【java并发】传统线程技术中创建线程的两种方式

    传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法:二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread.这两种方式 ...

随机推荐

  1. Camtasia Studio CamStudio如何导出为手机视频

    把视频拖放到左侧窗口,再按住拖放到下方的时间轴   点击生成并共享,然后设置为自定义生成设置   这里选择MP4,然后下一步   到这一步的时候,选择视频大小为自定义   会弹出窗口,手动输入宽360 ...

  2. ArcGIS鼠标滚轮方向之ArcMap篇

    ArcMap中地图缩放滚轮方向与我们常用的AutoCAD.在线地图等相反.ArcMap默认滚轮向上缩小,向下放大,曾经引起过多位用户的不满.好在ArcMap提供个性化设置. 打开ArcMap菜单栏-自 ...

  3. git 保存用户名密码

    打开本地的.git/config 加入 [credential] helper = store 保存,第一次需要输入用户名密码,输入一次密码后第二次就会记住密码了不会再提示输入用户名及密码

  4. EventSource 对象用于接收服务器发送事件通知,是网页自动获取来自服务器的更新

    //--------------------------------客户端代码----------------------------- if(typeof(EventSource) !== &quo ...

  5. Spring+mybatis+postgresql整合

    最近做了一个项目,需要使用Spring+mybatis+postgresql,下面记录一下整合步骤: 一.准备JAR包: 我使用的是maven,所以直接晒出pom.xml <project xm ...

  6. WireShark开启IP, TCP,UDP校验和的办法

    首先点击编辑->首选项

  7. Python实现微信扫码支付模式二(NativePay)

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7649207.html 核心代码github地址:https://github.com/ygj0930/Pyth ...

  8. EF Code First导航属性一对一关系中注意点及配置方法

    //学生 public class Student { [key] public int StId { get; set; } public int SocialSecurityNumber { ge ...

  9. Spring MVC的Post请求参数中文乱码的原因&处理

    一.项目配置: Spring 4.4.1-RELEASE Jetty 9.3.5 JDK 1.8 Servlet 3.1.0 web.xml文件中没有配置编解码Filter 二.实际遇到的问题:客户端 ...

  10. 【DB2】清理日志文件db2diag.log

    在数据库运行过程中,会产生很多的日志,进而使日志文件db2diag.log变大 当占用磁盘空间太大的时候,应该怎么处理呢? 方法一: db2inst1@Linux:/db2home/db2inst1/ ...