Environment Switcher 是一个在 Android 的开发和测试阶段,运用 Java 注解、APT、反射、混淆等原理来一键切换环境的工具。
Java 线程安全的集合
在 Java 中我们使用最多的 List 就是 ArrayList 和 LinkedList,它们在单线程中可以说是”玩的不亦乐乎”,而在多线程并发操作时就不行了。Java 为我们提供了几种方式以适应多线程下的 List 操作场景。本文将介绍几个多线程中适用的 List,文章最后也会介绍线程安全的 Map、Set 以及 Queue 和 Deque 的几个实现类。
IntentService源码解析
IntentService 是 Service 的子类,当然也是用于处理耗时操作的,通过 startService(Intent) 启动,并且会在工作线程中处理每个 Intent,并在操作结束或不正常时自行停止。
Handler消息机制源码解析
Handler 消息机制是由 Message
MessageQueue
Handler
Looper
共同完成的。
Handler 消息机制是用于在同一个进程中的多个线程之间进行通信的。由于工作线程与主线程共享地址空间,即 Handler 实例对象 mHandler 位于线程间共享的内存堆上,所以工作线程与主线程都能直接使用该对象,只需要注意多线程的同步问题。工作线程通过 mHandler 向其成员变量 MessageQueue 中添加新 Message,主线程一直处于 loop() 方法中,当收到新的 Message 时按照一定规则分发给相应的 handleMessage() 方法来处理。所以说,Handler 消息机制用于同进程的线程间通信的核心是线程间共享内存空间,而不同进程拥有不同的地址空间,也就不能用 Handler 来实现进程间通信。
FragmentManager is already executing transactions 异常分析
今天是 2019年09月13日,农历八月十五。没错今天是中秋节,而且对我来说,今年的中秋不一样🖕。
故事是这样的 ——
中秋前一天的晚上线上发现了问题,在家改bug到后半夜。中秋当天上午早上又接到线上的问题反馈,于是在家与其他几个小伙伴一起连线排查解决。经过一上午的努力,修改了几个问题,但是有两个问题没有查到原因和解决办法,于是决定下午去公司解决,还好下午狠顺利的将问题复现了,并找到了原因和解决办法。当把问题都回归验证后,已经是快晚上7点钟了。回到家不到 8 点,吃了一大碗大家下午包的给我一个人留得饺子……
扯蛋完毕,现在回到正题。
Dialog 中监听键盘弹出与收起事件
最近遇到了一个在 Dialog 中监听键盘弹出与收起事件的需求,经过查询资料再与自己的需求相结合然后思考,最终解决了问题。现将中间遇到的问题与解决办法记录下来。