Android多线程,异步消息处理机制, Thread, AsyncTask 简单总结
来源:互联网 发布:unity3d demo 编辑:程序博客网 时间:2024/04/20 01:45
今天看到了Android 多线程,以及异步消息处理机制,这里做一下简单的总结。
一、Android多线程的基本用法--Thread类
这里有两种方法.:
方法一: 新建一个类,继承自 Thread
class mythread extends Thread { @Override public void run() { while (true) { Log.e("TTTTTTTTTTT", System.currentTimeMillis() + ""); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
方法二: 实现Runable接口
class mythread implements Runnable { @Override public void run() { while (true) { Log.e("ttttttttttttt", System.currentTimeMillis() + ""); } } }
开始这个线程:new Thread(new mythread()).start()
二、Android 异步消息处理机制 Handler, Message
Android的UI 操作只能在主线程里操作, 举个简单的例子,如果你想在子线程里面TextView.setText(), 应用肯定会报错的。如何处理? 这里引出了handler机制。
简单流程:
1. 子线程里进行逻辑运算,然后创建一个Message 对象, 给message.what 复制,调用handler.sendMessage()方法。
Message message = new Message();
message.what = 1
handler.sendMessage();
2. handler 处理Message, 因为hander 是在主线程里运行,这里就可以更新UI了,例如setText()
Handler handler = new Handler(new Handler.Callback(){ @Override public boolean handleMessage(Message msg) { if (msg.what == 1) { tvDisplay.setText("Good good play, Hard hard study"); } return true; } });
class mythread extends Thread { @Override public void run() { Message message = new Message(); message.what = 1; handler.sendMessage(message); } }
public void onClick(View v) { new mythread().start(); }
三、 使用AsyncTask 处理异步消息
如何需要更新UI, 在doInBackground(){...} 方法中 publishProgress(), 在onProgressUpate()中更新UI。
public class DemoAsyncTask extends AppCompatActivity { TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_demo_async_task); Button btcClick = (Button) findViewById(R.id.btnClick); tv = (TextView) findViewById(R.id.tv); btcClick.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new update().execute(); } }); } class update extends AsyncTask<Void, Void,Boolean> { @Override protected Boolean doInBackground(Void... params) { publishProgress(); return null; } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); tv.setText("Nice to meet you "); } }}
0 0
- Android多线程,异步消息处理机制, Thread, AsyncTask 简单总结
- Android AsyncTask异步处理消息机制
- Android笔记----AsyncTask异步消息处理机制
- AsyncTask异步消息处理机制
- AsyncTask 异步消息处理机制
- android学习笔记——AsyncTask异步消息处理机制简单介绍及使用
- android os;异步消息处理机制:AsyncTask和Handler
- Android异步消息处理机制(3)AsyncTask基本使用
- Android异步消息处理机制(4)AsyncTask源码解析
- Android异步消息处理机制总结笔记
- Android异步消息处理机制总结
- 异步消息处理机制-Handler、AsyncTask
- AsyncTask(异步消息处理机制)
- Android多线程消息处理机制(一) Looper、Thread专题
- Android多线程消息处理机制(二) Looper、Thread专题续
- Android消息处理机制之AsyncTask使用总结
- Android的异步消息处理机制---Handler机制总结
- Android多线程----异步消息处理机制之Handler
- 【摘抄】产品经理面经:3个产品Offer是如何拿到的
- 小熊学习总结:ubuntu11.04安装Qt creater
- MSSQL CONVERT & DATENAME
- greenDAO简单使用经验
- es ik分词器安装
- Android多线程,异步消息处理机制, Thread, AsyncTask 简单总结
- git
- ruby 自带的全局变量
- 药店运营| 品类管理——构建采购模型:补货策略
- 关于C#中的lock object 、lock this 、 lock static object
- 进度对话框(ProgressDialog)
- 细说GCC、Make、GDB
- 数据链路
- JPA概要说明