安卓四大组件-服务-1_多线程编程
来源:互联网 发布:ubuntu安装ssh失败 编辑:程序博客网 时间:2024/05/18 03:05
1.1)线程基本用法
Class MyThread extends Thread{
Public void run(){}
}
new MyThread().start();
使用继承耦合度比较高,更多选择使用实现Runnable接口的方式来定义一个线程
Class MyThread implements Runnable {
Public void run(){}
}
MyThread myThread = new MyThread();
new Thread(myThread).start();
如果不想定义一个类去实现Runnable接口,也可以使用匿名类的方式
new Thread(new Runnable(){
public void run(){//处理具体的逻辑}
}).start();
1.2)在子线程中更新UIpublic class MainActivity extends AppCompatActivity implements View.OnClickListener { public static final int UPDATE_TEXT = 1; private TextView text; public Handler handler = new Handler() { public void handleMessage(Message msg){ switch (msg.what){ case UPDATE_TEXT: //在这里进行UI操作 text.setText("Nice to meet you"); break; default:break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (TextView) findViewById(R.id.text); Button changeText = (Button) findViewById(R.id.change_text); changeText.setOnClickListener(this); } @Override public void onClick(View v) { switch(v.getId()){ case R.id.change_text: new Thread(new Runnable() { @Override public void run() { Message message = new Message(); message.what = UPDATE_TEXT; handler.sendMessage(message);//将message对象发送出去 } }).start(); break; default: break; } }}
代码解析:安卓中的异步消息处理主要由四个部分组成:Message、Handler、MessageQueue和Looper.下面进行简要介绍:
1.Message
Message是在线程之间传递消息,它可以在内部懈怠少量的信息,在不同线程之间交换数据。上述代码我们使用了Message的what字段,除此之外还可以使用arg1和arg2字段携带一些整形数据使用obj字段携带一个Object对象。
2、Handler
用于发送和处理消息。发送消息使用Handler的sendMessage()方法,发出的消息经过一系列的处理,最终会传递到Handler的handleMessage()方法中。
2、MessageQueue
MassageQueue是消息队列的意思,它主要用于存放所有通过Handler发送的消息。这部分消息会一直存在消息队列中,等待被处理。每一个线程中只会有一个Message对象。
3、Looper
每一个线程中的MassageQueue管家,调用Lopper的loop()方法后,九会进入到一个无限循环中,然后每当发现MassageQueue中存在一条消息,就会将它取出,并传递到handlerMessage方法中。每一个线程也只会有一个Looper对象。
最后总体流程如下(不懂的看代码)
0 0
- 安卓四大组件-服务-1_多线程编程
- 安卓四大组件-服务-2_服务基本用法
- 安卓四大组件之service服务
- 安卓四大组件之服务
- 安卓四大组件-Service服务
- 安卓四大组件
- 安卓四大组件
- 安卓四大组件
- 安卓四大组件
- 安卓四大组件
- 安卓四大组件
- 安卓四大组件
- 安卓四大组件
- 安卓四大组件
- 安卓1107_四大组件-多页面开发Activity
- 安卓四大组件——Service(服务)
- 安卓四大组件简述
- 安卓的四大组件
- java并发编程实战笔记
- Oracle最常见的行转列
- 蓝桥杯练习系统试题集(二)--基础练习(含C/C++答案)
- 安装错误:unable to access android sdk add-on list
- 桥接与中继
- 安卓四大组件-服务-1_多线程编程
- [安全] -- 使用AES加密算法进行数据加密和解密
- 杂谈篇-用lua在nginx中实现一个WAF
- 海思PCM的格式与g711
- Spark Shuffle FetchFailedException解决方案
- 银行卡识别sdk OCR识别技术悄悄的走进你的生活
- 机器学习 数据挖掘 推荐系统 时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)
- 从一个简单的Java单例示例谈谈并发
- 带源码的APK预置进系统时所遇到的问题