prepare方法

public static void prepare() {prepare(true);}

prepare又调用它的重载方法,并将true作为默认形参传入,如果线程未绑定Looper对象则调用sThreadLocal.set(new Looper(quitAllowed))方法。如果已经绑定则抛出一个异常信息“每一个线程只能绑定一个Looper对象”。

private static void prepare(boolean quitAllowed) {if (sThreadLocal.get() != null) {throw new RuntimeException("Only one Looper may be created per thread");}//sThreadLocal.set(new Looper(quitAllowed))首先调用的是sThreadLocal.set()方法,以quitAllowed(也就是true)作为形参并调用Looper的有参构造然后传入一个Looper实例对象。sThreadLocal.set(new Looper(quitAllowed));
}

Looper的有参构造内以true作为形参传入并生成一个信息队列对象引用保存至mQueue成员变量,然后将当前线程引用保存至mThread成员变量。

private Looper(boolean quitAllowed) {mQueue = new MessageQueue(quitAllowed);mThread = Thread.currentThread();}

在MessageQueue有参构造中将quitAllowed(true)保存至mQuitAllowed成员变量。

MessageQueue(boolean quitAllowed) {mQuitAllowed = quitAllowed;mPtr = nativeInit();}

其实写到这里还是没有彻底弄明白,里面涉及了一些native的东西。先备注在这里以后懂了慢慢回头看。

Looper.prepare()方法相关推荐

  1. 【Android】java.lang.AssertionError use looper thread, must call Looper.prepare() first!异常分析

    java.lang.AssertionError: use looper thread, must call Looper.prepare() first! 在消息处理中必须先调用Looper类的pr ...

  2. Can't create handler inside thread that has not called Looper.prepare()

    问题: Can't create handler inside thread that has not called Looper.prepare() 1,在报错的方法前加Looper.prepare ...

  3. Can't toast on a thread that has not called Looper.prepare()

    这个错误说了就是子线程直接弹Toast 就说下我的处理方法 Looper.prepare();Toast.makeText(MainActivity.this, "11111", ...

  4. java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

    java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() ...

  5. 【转】Android -- Looper.prepare()和Looper.loop()

    Looper.prepare()和Looper.loop() 原文地址:http://blog.csdn.net/heng615975867/article/details/9194219 Andro ...

  6. Android -- Looper.prepare()和Looper.loop() —深度版

    Android中的Looper类,是用来封装消息循环和消息队列的一个类,用于在android线程中进行消息处理.handler事实上能够看做是一个工具类.用来向消息队列中插入消息的. (1) Loop ...

  7. Can't create handler inside thread that has not called Looper.prepare() 解决办法

    在开发的过程当中,遇到了想在一个线程中弹出一个提示窗 new AlertDialog.Builder(            context),但是就出现了一个问题. java.lang.Runtim ...

  8. Can't create handler inside thread Thread that has not called Looper.prepare()

    今天在子线程里面写了一个Toast 运行程序直接崩溃了 看了下log 如下 最后忽然想到了子线程里面不能直接使用Toast 然后 就添加了 Looper.prepare(); 和 Looper.loo ...

  9. Android在子线程里使用Toast报错Can't toast on a thread that has not called Looper.prepare()

    在接android SDK的时候有时候为了方便debug调试查看,通过Toast输出相关信息, 实际上这个是在子线程中输出的,在logcat里查看有如下报错java.lang.RuntimeExcep ...

最新文章

  1. CVPR NTIRE 2022|双目超分辨率挑战赛开赛
  2. SPP-Net 是怎么让 CNN 实现输入任意尺寸图像的?
  3. RedisTemplate
  4. 四旋翼姿态解算——基础理论及推导
  5. Java黑皮书课后题第8章:*8.16(对二维数组排序)编写一个方法,使用下面的方法头对二维数组排序。这个方法首先按行排序,然后按列排序
  6. 使用Chrome的inspect element注意事项
  7. idea代码样式模板_阿里p3c(代码规范,eclipse插件、模版,idea插件)
  8. 两年AI研究经验(教训)总结,进来看看吧! 1
  9. WINCE7中RTC时钟芯片BQ32K的开发
  10. ug中模型不见了怎么办_关于UG参数化建模的定义
  11. SpringBoot 手动配置 @Enable 的秘密
  12. ALEIS,啊,累死
  13. 解决js弹窗网页出现白屏
  14. sCMOS相机的读出噪声
  15. C# 删除 文件 里面的第一行数据
  16. VS2008开发Silverlight程序用到的插件
  17. Ubuntu16.04.4制作自定义安装光盘方案
  18. Java手机验证码的实现
  19. Encoder-Decoder 框架
  20. office2007word不能插入页码解决办法

热门文章

  1. 戴上装饰者模式的眼镜,看透Java I/O
  2. 手机端设计规范(750*1334)
  3. 记录我的大疆无人机消费体验
  4. Java剑开天门(四)
  5. 蓝桥杯-幸运数(python)
  6. hdu 2829 Lawrence 斜率优化
  7. matlab之text()函数
  8. 什么是空实现?什么时候用空实现?
  9. 画论73 龚贤《龚贤论画》
  10. 【百炼】二分法求函数的零点(c语言)