Android在子线程更新UI方式总结
来源:互联网 发布:康耐视视觉软件下载 编辑:程序博客网 时间:2024/05/24 03:09
1.Handler方式
—————-复写handler的handleMessage方式——————-
//在UI线程中创建Handler对象private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { //根据Message的内容做相应的更新(一般使用msg.what,也可进行数据传递) }}//在非UI线程中(子线程)使用Handler发送更新消息int UPDADE_UI = 1;Messager msg = Message.obtain();msg.what = UPDATE_UI;mHandler.sendMessage(msg);
—————-handler.post方式——————-
//在UI线程中创建Handler对象private Handler handler = new Handler();//在子线程中调用Handler对象更新handler.post(new Runnable() { @Override public void run() { //在此处直接更新UI,例如mText.setText("更新"); }});
2.AsyncTask
new AsyncTask<Void, Void, Void>() { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected Void doInBackground(Void... params) { } //onPostExecute()方法内可直接更新UI @Override protected void onPostExecute(Void aVoid) { //在此处可直接执行更新UI的操作 }}.execute();
3.view.post
将一个Runnable添加到消息队列,Runnable将在UI线程运行。
This method can be invoked from outside of the UI thread only when this View is attached to a window.即必须保证该View被添加到窗口。
setContentView(R.layout.activity_main);button = (Button) findViewById(R.id.btn_show);button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { //此处处于子线程内 button.post(new Runnable() { @Override public void run() { button.setText("liuconen"); } }); } }).start(); }});
4.Activity.runOnUiThread(Runnable)方式
public final void runOnUiThread (Runnable action)
在UI线程中执行,如果当前线程是UI线程是UI线程,动作将被立即执行; 如果当前线程不是UI线程,动作将被发送到UI线程的消息队列(按照消息队列的顺序执行)
示例:
button = (Button) findViewById(R.id.btn_show);button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { //此处直接更新UI button.setText("liuconen"); } }); } }).start(); }});
0 0
- Android在子线程更新UI方式总结
- Android 子线程 更新 UI 界面 总结
- Android在子线程更新UI界面
- 子线程更新UI方式
- Android中在子线程中更新UI的两种方式
- Android 在子线程中更新UI的方式,使用handler
- Android中在子线程中更新UI的三种方式
- 在子线程更新UI
- Android线程模型--在子线程中更新UI
- Android: 在UI线程更新UI的几种方式
- Android 子线程更新UI
- Android 子线程更新 UI
- Android 子线程更新UI
- Android 子线程更新UI
- android子线程更新UI
- android子线程更新UI
- android子线程更新UI
- 子线程不能更新UI线程总结
- opencv3.2——小试牛刀(1):使用鼠标选择ROI进行SURF匹配
- Lua UserData
- java web目录结构的理解
- Python中super()函数简介及用法分享
- Android Studio快捷键大全
- Android在子线程更新UI方式总结
- 计算机组成原理
- 4059: [Cerc2012]Non-boring sequences
- C语言寻找BUG
- Longest Palindromic Substring(leetcode medium algorithm problem)
- Android开发之OkHttp的使用
- JavaScript函数执行时函数实参赋值和函数内部预解析的顺序
- 第一个文章吧
- 通用缓存框架(JAD-CACHE)使用配置说明书