Android程序的主线程(UI线程)无法跑有时间耗费的代码,所以一个好习惯是将各种与UI无关的操作,比如网络通信(包括http、ftp、mail、socket)、文件操作、数值计算等放在子线程中。为了方便操作UI线程(Activity主类)中的各种方法和变量,将子线程写成Activity主类中的内部类是个较省事的方式。

实例代码:

Archer_runnable()可直接使用主类中的Message和bundle来向主类发送消息,也可使用主类中定义的其它方法。

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.widget.Toast;
public class MainActivity extends Activity {private Thread Archer_Thread;// ------------------------------------private Message msg;private Bundle bundle;private StringBuilder sb_contact;// ------------------------------------public MainActivity() {}protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button bn_Ballista = (Button) this.findViewById(R.id.button_Ballista);bn_Ballista.setOnClickListener(new BallistaListener());Archer_Thread = new Thread(Archer_runnable);Archer_Thread.start();}public boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}public Handler mHandler = new Handler() {String str_tmp;public void handleMessage(Message msg) {switch (msg.what) {case 0x12: {str_tmp = msg.getData().getString("result");Toast.makeText(MainActivity.this, "...", Toast.LENGTH_SHORT).show();break;}default:break;}}};Runnable Archer_runnable = new Runnable() {public void run() {sb_contact = new StringBuilder("contact: ");msg = new Message();bundle = new Bundle();// /-----------------------------------------msg.what = 0x12;bundle.putString("result", sb_contact.toString());msg.setData(bundle);mHandler.sendMessage(msg);}};
}

转载于:https://blog.51cto.com/7026966/1232484

Android 线程管理相关推荐

  1. Android线程管理(一)

    线程通信.ActivityThread及Thread类是理解Android线程管理的关键. 线程,作为CPU调度资源的基本单位,在Android等针对嵌入式设备的操作系统中,有着非常重要和基础的作用. ...

  2. android 管理类,android 线程管理类

    1. 延时任务以及取消延时的应用场景:实时搜索,文字内容变化时候不发送请求,当停止变化指定时间后再发送请求 2. 使用方法: // 回到主线程 MainThreadHelper.runOnUIthre ...

  3. Android 线程池管理工具类

    转自Android 线程池 public class AppExecutors {private static final String TAG = "AppExecutors"; ...

  4. Android窗口管理服务WindowManagerService计算窗口Z轴位置的过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8570428 通过前面几篇文章的学习,我们知道了 ...

  5. Android 内存管理 amp;Memory Leak amp; OOM 分析

    1.Android 流程管理&内存 Android主要应用在嵌入式设备其中.而嵌入式设备因为一些众所周知的条件限制,通常都不会有非常高的配置,特别是内存是比較有限的. 假设我们编写的代 码其中 ...

  6. Android 线程池概念及使用

    一:使用线程池的原因 在android开发中经常会使用多线程异步来处理相关任务,而如果用传统的newThread来创建一个子线程进行处理,会造成一些严重的问题: 在任务众多的情况下,系统要为每一个任务 ...

  7. Android线程池封装库

    目录介绍 1.遇到的问题和需求 1.1 遇到的问题有哪些 1.2 遇到的需求 1.3 多线程通过实现Runnable弊端 1.4 为什么要用线程池 2.封装库具有的功能 2.1 常用的功能 3.封装库 ...

  8. Android内存管理

    Android是一个基于Linux实现的操作系统.但对于Linux内核来说,Android也仅仅只是一个运行在内核之上的应用程序,与其他运行在内核之上的应用程序没有任何区别.所以Android需要一套 ...

  9. android线程间通信的几种方法_Android 技能图谱学习路线

    Java基础 Java Object类方法 HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理 HashMap 和 HashTable 区别 HashCode 作用,如何重载hashC ...

最新文章

  1. iOS 7 新版微信 URL 不支持跳转 App Store 的解决方案
  2. HTML DOM教程 14-HTML DOM Document 对象
  3. VS2013配置opencv教程(图文详解)
  4. python数据表_第1关:了解python数据表操作
  5. 云+X案例展 | 传播类:k3s基于逾百台工控机的应用实践
  6. php怎么去除内容,php怎么把html标签去除?
  7. day 45 SQLAlchemy,和增删查改
  8. Android学习之路五:Dialog和Toast
  9. 考上985能改变命运吗_南开研究生称读研改变命运被嘲讽,网友:本科垃圾,考上985也没用...
  10. Vue设置全局loading(加载动画)功能:
  11. Webtrends的跨域访客跟踪机制
  12. jsonrpc php使用,Json-RPC 的 PHP 扩展 php-JsonRPC
  13. apache - mod_rewrite配置指令RewriteBase
  14. Resolve operation not in progress, we are not resuming.
  15. 炉石传说外 挂记(序)
  16. gitlab artifacts too large
  17. 在javascript中 setInterval()、clearInterval()、clearTimeout()等等常用的函数的含义
  18. 第4章 控制执行流程
  19. 人生苦短,必须性感!
  20. c语言如何不用数组排序,c语言实现数组排序.docx

热门文章

  1. C语言 · 求矩阵各个元素的和
  2. glide等图片缓存框架替换缓存图片解决方案
  3. STL区间成员函数及区间算法总结
  4. 自动化测试里的数据驱动和关键字驱动思路的理解
  5. 互联网协议 — VRRP 虚拟路由器冗余协议
  6. Cinder LVM Oversubscription in thin provisioning
  7. NFV — Overview
  8. 设计模式——外观模式
  9. AMDKFD 合并入 Linux 3.19 内核
  10. JS Math.sin() 与 Math.cos()