Android中切换到主线程执行的方法
方法一: view.post(Runnable runnable)
使用 view 对象,调用 post 方法即可在主线程中执行里边的代码,postDelayed 是延时执行,也可以达到相同的效果。例如:
textView.post(new Runnable() { @Override public void run() { textView.setText("更新textView"); } });
方法二:runOnUiThread(Runnable runnable)
在 Acitivity 中直接调用 runOnUiThread 或者将 Activity 的 context 对象传入子线程调用。例如:
runOnUiThread(new Runnable() { public void run() { textView.setText("更新textView"); } }
方法三:handler.post(Runnable runnable)
如果是在主线程可以直接 new 一个 Handler 对象,如果是在子线程需要获取主线程的 Looper 和 Queue
// 主线程 Handler handler = new Handler(); // 子线程 Handler handler = new Handler(Looper.getMainLooper());
然后调用 post 方法,或者 postAtTime、postAtDelayed 即可。例如:
handler.post(new Runnable() { @Override public void run() { textView.setText("更新textView"); } });
方法四:handler.sendMessage(Message message)
这个是比较常用的方法通过 sendMessage 发送消息,然后在 handleMessage 中进行处理。例如:
Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); // 处理消息 textView.setText("更新textView" + msg); switch(msg.what) { case 0: // 处理指定消息 break; } } }; handler.sendEmptyMessage(0);
方法五:使用 AsynTask
AsyncTask asyncTask = new AsyncTask() { @Override protected Object doInBackground(Object[] objects) { return null; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); } };
doInBackground 方法执行是在子线程中,其返回结果会传递到 onPostExecute 方法中,onPostExecute 就是运行在主线程。
以上就是几种常用的切换到主线程执行的方法,更多相关Android切换到主线程执行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Android使用缓存机制实现文件下载及异步请求图片加三级缓存
这篇文章主要介绍了Android使用缓存机制实现文件下载及异步请求图片加三级缓存的相关资料,需要的朋友可以参考下2016-02-02android 添加按(power键)电源键结束通话(挂断电话)
首先我们发现现在我们所用的android智能手机大部分都有当你在打电话时按power键来挂断电话,一般都是在设置中2013-01-01Android onSaveInstanceState和onRestoreInstanceState触发的时机
这篇文章主要介绍了Android onSaveInstanceState和onRestoreInstanceState触发的时机的相关资料,需要的朋友可以参考下2017-05-05Android实现在子线程中更新Activity中UI的方法
这篇文章主要介绍了Android实现在子线程中更新Activity中UI的方法,涉及Android线程与activity操作的相关技巧,需要的朋友可以参考下2016-04-04
最新评论