Android之让代码跑在主线程(无context上下文)的封装
1、问题
有一段代码需要跑在主线程里面,但是没有context上下文,一开始直接想到runOnUiThread,好像不行
runOnUiThread(new Runnable(){public void run(){//执行更新ui的操作}
});
2、解决办法
封装一个handler的单例类
import android.os.Handler;
import android.os.Looper;public class MainHandler extends Handler {private static volatile MainHandler mInstance;private MainHandler() {super(Looper.getMainLooper());}public static MainHandler getInstance() {if (mInstance == null) {synchronized (MainHandler.class) {if (mInstance == null) {mInstance = new MainHandler();}}}return mInstance;}
}
使用如下
MainHandler.getInstance().post(new Runnable(){@Overridepublic void run() {//需要抛到主线程的代码}});
Android之让代码跑在主线程(无context上下文)的封装相关推荐
- 【Android】为啥子线程抛出异常主线程会崩溃?UncaughtExceptionHandler
学而不思则罔,思而不学则殆 [Android]为啥子线程抛出异常主线程会崩溃?UncaughtExceptionHandler 引言 官方解释 测试 测试uncaughtException的调用链 获 ...
- 【Android】子线程切回主线程的方法梳理
[Android]子线程切回主线程的方法梳理 view.post(Runnable action) textView.post(() -> {textView.setText("更新t ...
- 用Handler的post()方法来传递线程中的代码段到主线程中执行
自定义的线程中是不能更新UI的,但是如果遇到更新UI的事情,我们可以用handler的post()方法来将更新UI的方法体,直接传送到主线程中,这样就能直接更新UI了.Handler的post()方法 ...
- android判断主线程_惊天秘密!从Thread开始,揭露Android线程通讯的诡计和主线程的阴谋...
背景介绍 我们在Android开发过程中,几乎都离不开线程.但是你对线程的了解有多少呢?它完美运行的背后,究竟隐藏了多少不为人知的秘密呢?线程间互通暗语,传递信息究竟是如何做到的呢?Looper.Ha ...
- Android创建子线程和回调主线程的几种方式
一. 创建子线程//通过继承threadpublic class JNThread1 extends Thread {public JNThread1(String name){super(name) ...
- C#如何将线程中的代码抛到主线程去执行
private SynchronizationContext mainThreadSynContext; //主线程 mainThreadSynContext = new WindowsFormsSy ...
- Android判断当前线程是否是主线程的方法
方法一:使用Looper类判断 Looper.myLooper() == Looper.getMainLooper() 方法二:通过查看Thread类的当前线程 Thread.currentThrea ...
- Android的主线程与子线程
在上一篇文章Android的进程.线程与优先级中我们提到: 线程(thread):是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.一个进程至少对应一个线程. CP ...
- Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解...
MainActivity如下: package cc.c;import android.app.Activity; import android.os.Bundle; import android.o ...
最新文章
- 霸榜 GitHub:去你丫的算法!
- c语言程序做四则运算还要余数,大整数四则运算 高质量C语言程序.doc
- BCH的去中心化理念自治
- C语言 · 矩阵乘法
- APROM、LDROM的区别!(flash)
- sqlserver存储过程sp_send_dbmail邮件(html)实际应用
- liunx 上传 代码到github
- Web安全扫描器Netsparker v3.5发布
- 163vip邮箱提醒您谨防邮箱诈骗,点击查看常见套路
- PREEMPT RT 实现原理
- Files and Directories
- 使用ant将flash air游戏编译和打包
- Springboot @Value读取map或list的properties配置
- 记录一道已知是n,(p-1)*(q-2)和(p-2)*(q-1)的RSA题目writeup
- 全国所有城市人均GDP排名(包含县级市 611 )
- Single Image Reflection Removal
- 英语计算机主板接口有,i/o(计算机接口)_百度百科
- VRP系统(视图介绍以及基本命令)
- 如何给图片更改格式?jpg转webp怎么操作?
- ip地址,MAC地址,子网掩码,网关,VPC,交换机,
热门文章
- 让前端与后端异步起来
- 如何使用 EF Core 按周 对数据分组?
- docker安装jenkins并用docker部署net
- 浅谈​与彼得原理和责任管理有关的小故事
- GraphQL:验证与授权
- 天际数见数据质量巡检架构优化
- Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(一)
- C# Lazy Loading
- 深入理解.NET Core的基元: deps.json, runtimeconfig.json, dll文件
- 分布式事务一致性解决方案