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上下文)的封装相关推荐

  1. 【Android】为啥子线程抛出异常主线程会崩溃?UncaughtExceptionHandler

    学而不思则罔,思而不学则殆 [Android]为啥子线程抛出异常主线程会崩溃?UncaughtExceptionHandler 引言 官方解释 测试 测试uncaughtException的调用链 获 ...

  2. 【Android】子线程切回主线程的方法梳理

    [Android]子线程切回主线程的方法梳理 view.post(Runnable action) textView.post(() -> {textView.setText("更新t ...

  3. 用Handler的post()方法来传递线程中的代码段到主线程中执行

    自定义的线程中是不能更新UI的,但是如果遇到更新UI的事情,我们可以用handler的post()方法来将更新UI的方法体,直接传送到主线程中,这样就能直接更新UI了.Handler的post()方法 ...

  4. android判断主线程_惊天秘密!从Thread开始,揭露Android线程通讯的诡计和主线程的阴谋...

    背景介绍 我们在Android开发过程中,几乎都离不开线程.但是你对线程的了解有多少呢?它完美运行的背后,究竟隐藏了多少不为人知的秘密呢?线程间互通暗语,传递信息究竟是如何做到的呢?Looper.Ha ...

  5. Android创建子线程和回调主线程的几种方式

    一. 创建子线程//通过继承threadpublic class JNThread1 extends Thread {public JNThread1(String name){super(name) ...

  6. C#如何将线程中的代码抛到主线程去执行

    private SynchronizationContext mainThreadSynContext; //主线程 mainThreadSynContext = new WindowsFormsSy ...

  7. Android判断当前线程是否是主线程的方法

    方法一:使用Looper类判断 Looper.myLooper() == Looper.getMainLooper() 方法二:通过查看Thread类的当前线程 Thread.currentThrea ...

  8. Android的主线程与子线程

    在上一篇文章Android的进程.线程与优先级中我们提到: 线程(thread):是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.一个进程至少对应一个线程. CP ...

  9. Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解...

    MainActivity如下: package cc.c;import android.app.Activity; import android.os.Bundle; import android.o ...

最新文章

  1. 霸榜 GitHub:去你丫的算法!
  2. c语言程序做四则运算还要余数,大整数四则运算 高质量C语言程序.doc
  3. BCH的去中心化理念自治
  4. C语言 · 矩阵乘法
  5. APROM、LDROM的区别!(flash)
  6. sqlserver存储过程sp_send_dbmail邮件(html)实际应用
  7. liunx 上传 代码到github
  8. Web安全扫描器Netsparker v3.5发布
  9. 163vip邮箱提醒您谨防邮箱诈骗,点击查看常见套路
  10. PREEMPT RT 实现原理
  11. Files and Directories
  12. 使用ant将flash air游戏编译和打包
  13. Springboot @Value读取map或list的properties配置
  14. 记录一道已知是n,(p-1)*(q-2)和(p-2)*(q-1)的RSA题目writeup
  15. 全国所有城市人均GDP排名(包含县级市 611 )
  16. Single Image Reflection Removal
  17. 英语计算机主板接口有,i/o(计算机接口)_百度百科
  18. VRP系统(视图介绍以及基本命令)
  19. 如何给图片更改格式?jpg转webp怎么操作?
  20. ip地址,MAC地址,子网掩码,网关,VPC,交换机,

热门文章

  1. 让前端与后端异步起来
  2. 如何使用 EF Core 按周 对数据分组?
  3. docker安装jenkins并用docker部署net
  4. 浅谈​与彼得原理和责任管理有关的小故事
  5. GraphQL:验证与授权
  6. 天际数见数据质量巡检架构优化
  7. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(一)
  8. C# Lazy Loading
  9. 深入理解.NET Core的基元: deps.json, runtimeconfig.json, dll文件
  10. 分布式事务一致性解决方案