Android 线程管理
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 线程管理相关推荐
- Android线程管理(一)
线程通信.ActivityThread及Thread类是理解Android线程管理的关键. 线程,作为CPU调度资源的基本单位,在Android等针对嵌入式设备的操作系统中,有着非常重要和基础的作用. ...
- android 管理类,android 线程管理类
1. 延时任务以及取消延时的应用场景:实时搜索,文字内容变化时候不发送请求,当停止变化指定时间后再发送请求 2. 使用方法: // 回到主线程 MainThreadHelper.runOnUIthre ...
- Android 线程池管理工具类
转自Android 线程池 public class AppExecutors {private static final String TAG = "AppExecutors"; ...
- Android窗口管理服务WindowManagerService计算窗口Z轴位置的过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8570428 通过前面几篇文章的学习,我们知道了 ...
- Android 内存管理 amp;Memory Leak amp; OOM 分析
1.Android 流程管理&内存 Android主要应用在嵌入式设备其中.而嵌入式设备因为一些众所周知的条件限制,通常都不会有非常高的配置,特别是内存是比較有限的. 假设我们编写的代 码其中 ...
- Android 线程池概念及使用
一:使用线程池的原因 在android开发中经常会使用多线程异步来处理相关任务,而如果用传统的newThread来创建一个子线程进行处理,会造成一些严重的问题: 在任务众多的情况下,系统要为每一个任务 ...
- Android线程池封装库
目录介绍 1.遇到的问题和需求 1.1 遇到的问题有哪些 1.2 遇到的需求 1.3 多线程通过实现Runnable弊端 1.4 为什么要用线程池 2.封装库具有的功能 2.1 常用的功能 3.封装库 ...
- Android内存管理
Android是一个基于Linux实现的操作系统.但对于Linux内核来说,Android也仅仅只是一个运行在内核之上的应用程序,与其他运行在内核之上的应用程序没有任何区别.所以Android需要一套 ...
- android线程间通信的几种方法_Android 技能图谱学习路线
Java基础 Java Object类方法 HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理 HashMap 和 HashTable 区别 HashCode 作用,如何重载hashC ...
最新文章
- iOS 7 新版微信 URL 不支持跳转 App Store 的解决方案
- HTML DOM教程 14-HTML DOM Document 对象
- VS2013配置opencv教程(图文详解)
- python数据表_第1关:了解python数据表操作
- 云+X案例展 | 传播类:k3s基于逾百台工控机的应用实践
- php怎么去除内容,php怎么把html标签去除?
- day 45 SQLAlchemy,和增删查改
- Android学习之路五:Dialog和Toast
- 考上985能改变命运吗_南开研究生称读研改变命运被嘲讽,网友:本科垃圾,考上985也没用...
- Vue设置全局loading(加载动画)功能:
- Webtrends的跨域访客跟踪机制
- jsonrpc php使用,Json-RPC 的 PHP 扩展 php-JsonRPC
- apache - mod_rewrite配置指令RewriteBase
- Resolve operation not in progress, we are not resuming.
- 炉石传说外 挂记(序)
- gitlab artifacts too large
- 在javascript中 setInterval()、clearInterval()、clearTimeout()等等常用的函数的含义
- 第4章 控制执行流程
- 人生苦短,必须性感!
- c语言如何不用数组排序,c语言实现数组排序.docx