Android多线程入门学习
(1)进程间通信交换信息的一种方式--使用handler;
(2)在主线程中new一个Handler对象,并重写他的handlerMessage(Message msg)方法;
(3)Message中有几个属性,可以用来传递简单的int型的参数(一般定义多个static final int 的常量)用来给What分类;
(4)obj属性可以用来传递其他对象,其中arg1和arg2两个属性可以用来储存int消息内容。
下面是一个activity_main布局

下面是主要Activity代码
public class MainActivity extends Activity {
private final static String TAG = "THREAD_ACTIVITY"; //调试标记
public final static int MUTI_THREAD = 0;//用于what属性的标记变量
public final static int COMPLETE_THREAD = 1;//用于what属性的标记变量
private Button btn; private TextView tv;
private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) //重写处理消息的方法
{ if(msg.what==MUTI_THREAD)
{ tv.setText(""+msg.arg1); }
else if(msg.what==COMPLETE_THREAD)
{ tv.setText("complete"); btn.setText("complete"); }
super.handleMessage(msg); } };
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener( new OnClickListener() {
@Override public void onClick(View v) {
start_thread(); btn.setText("running...");
}
});
}
private void start_thread() {
// TODO Auto-generated method stub
new Thread(){ //新线程
@Override public void run() {
// TODO Auto-generated method stub
int i = 100;
int j = 0;
Message msg = new Message();
for(j=1;j<i;j++){
Log.v(TAG, "J = "+j);
msg.what = MUTI_THREAD;
msg.arg1 = j;
handler.sendMessage(msg); //每次发送一个消息
try {
Thread.sleep(1000); }
catch (InterruptedException e) {
// TODO Auto-generated catch block e.printStackTrace(); }
}
msg.what = COMPLETE_THREAD;
handler.sendMessage(msg); //完成时修改what属性 }
}.start();
}
}



注意:在运行前必须加入permission权限INTERNET
Android多线程入门学习的更多相关文章
- java多线程入门学习(一)
java多线程入门学习(一) 一.java多线程之前 进程:每一个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销.一个进程包括1--n个线程. 线程:同一类线程共享代码 ...
- android的入门学习
android 入门学习. 活动:就是一个包含应用程序的用户界面的窗口.目的就是与用户交互. 意图:就是能够将来自不同应用程序的不同活动无缝连接在一起工作的"胶水",确保这些任务执 ...
- Android SurfaceView入门学习
学习资料: Android 开发群英传 搜索学习资料时,搜到了罗升阳老师的Android视图SurfaceView的实现原理分析,老罗老师写的一系列博客,一年前开始学习Android时看不懂,现在依然 ...
- Android测试入门学习
一,Android测试新人练习——安装及文件传输 [课前准备] Android测试环境搭建 1.下载并安装JDK: http://www.oracle.com/technetwork/java/jav ...
- c# 多线程——入门学习
1. 概念介绍 1.1 线程 线程是操作系统能够进行运算调度的最小单位,包含在进程之中,是进程中的实际运作单位.一条线程指的时进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不 ...
- Java多线程学习(一)Java多线程入门
转载请备注地址:https://blog.csdn.net/qq_34337272/article/details/79640870 系列文章传送门: Java多线程学习(一)Java多线程入门 Ja ...
- Android多线程源码学习笔记一:handler、looper、message、messageQueue
最近在学习Android多线程相关知识的源码,现在把自己的笔记整理一下,写出来加深印象. Android多线程通讯的核心是handler.looper.message.messageQueue,这篇文 ...
- Android M中 JNI的入门学习
今年谷歌推出了Android 6.0,作为安卓开发人员,对其学习掌握肯定是必不可少的,今天小编和大家分享的就是Android 6.0中的 JNI相关知识,这是在一个安卓教程网上看到的内容,感觉很不错, ...
- Android Camera2 拍照入门学习
原文:Android Camera2 拍照入门学习 学习资料: 肾虚将军android camera2 详解说明 极客学院android.hardware.camera2 使用指南 Android 5 ...
随机推荐
- 在VS2010中打开VS2012的项目
修改工程文件来把VS2012的工程文件移植到VS2010中 首先是修改解决方案文件(.sln文件). 使用记事本打开,把里面的 Microsoft Visual Studio Solution Fil ...
- CSS 3D旋转 hover 后设置transform 是相对于正常位置
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- poj1125(Floyd最短路)
//Accepted 164 KB 0 ms //floyd #include <cstdio> #include <cstring> #include <iostrea ...
- CPU MPU MCU SOC SOPC关系及区别
在嵌入式开过程,会经常接触到一些缩写术语概念,这些概念在嵌入式行业中使用率非常高,下面我们就解释一下这些概念之间的关系和区别: 1.CPU(Central Processing Unit),是一台计算 ...
- sql连接又一篇
作者:初行 – 博客园 SQL连接可以分为内连接.外连接.交叉连接. 数据库数据: book表: stu表: ...
- numpy中的broadcast
关于broadcast,官方文档描述如下: Each universal function takes array inputs and produces array outputs by perfo ...
- IOS网络开发概述
概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...
- PB常用日期
用一条语句写成的有关日期函数 //1.生肖(年份参数:int ls_year 返回参数:string): mid(fill('鼠牛虎兔龙蛇马羊猴鸡狗猪',48),(mod(ls_year -1900 ...
- Java Proxy
Client---->Interface A -- -- 代理类 Class AImpl 代理类是动态生成的,借助Proxy类和InvocationHandler接口进行实 ...
- IOS源码封装成.bundle和.a文件,以及加入xib的具体方法,翻遍网络,仅此一家完美翻译!! IOS7!!(3) 完美结局
以上翻译有误解之处,现在简单做法如下: 经过深入研究,才感觉明白了内部机制,现在简单介绍于下,主要步骤:xcode5 创建库项目,删掉测试文件和默认创建的类,添加viewController类带xib ...