原文链接: 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. LintCode: Unique Characters

    C++, time: O(n^2) space: O(0) class Solution { public: /** * @param str: a string * @return: a boole ...

  2. JS获取当前/指定URL参数

    方法: 首先通过 document.location 获得当前访问网页的网址, 其次用 split 方法通过“?”把网址分为两部分. 如果网址中有参数(arrObj.length > 1) 再用 ...

  3. springboot 注解版案例

    1.dao层 /** * 查询列表 * @param dataRequest * @return */ @SelectProvider(type = CuiShouSqlProvider.class, ...

  4. mysql安装后服务启动不了

    1.1 前言 最近真的是倒霉到家,装个mysql都能把所有的问题给问候了一遍······不过这也是一个宝贵的经验,得好好总结下,毕竟也不知道以后会不会再次遇到.如果有网友也能像我这样倒霉,但是能够幸运 ...

  5. 【转】Android Studio开发应用桌面出现两个或多个图标

    原文链接:http://blog.csdn.net/jia635/article/details/78259699 解决办法: 查找的是不是自己的AndroidManifest中 多个Activity ...

  6. web ide

    https://www.jianshu.com/p/339dff3da1fa https://www.eclipse.org/che/ https://github.com/Coding/WebIDE ...

  7. .NET 工具生成引擎概述

    Mark Michaelis 微软中国MSDN 过去几年大家一直都在使用 .NET Core(有这么久吗?)并且都知道“生成系统”经历了重大改变,不论是终止对 Gulp 的内置支持,还是放弃 Proj ...

  8. 如何查看2to3.PY的帮助文档

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #如何查看2to3.PY的帮助文档 #http://tieba.baidu.com/p/3939904893 ...

  9. jenkins+maven+junit构建自动化测试,整合junit xml生成直观的测试报告[留存]

    在自动化测试过程中,测试报告最能直观的体现测试的价值,之前一直使用maven+junit来构建我的自动化测试,但这样有几个缺点,一是,不能定时构建自动化任务(也许是我没有找到maven有没有提供这样的 ...

  10. [解决]java.lang.IllegalArgumentException: Bad level "DEBUG"

    Tomcat启动报错,搞得烦的一比.常规思维就会迷瞪,谁让tomcat的日志级别特殊ne.... http://tomcat.apache.org/tomcat-7.0-doc/ 错误现象: Hand ...