Zhujiaqqq Blog


  • 首页

  • 关于

  • 标签

  • 分类

ANR产生的原因是什么?

发表于 2019-04-06 | 分类于 Android

1 UI线程正在响应另外的事件,当前事件被阻塞

2 当前事件在UI线程中处理,但由于耗时太长没有及时完成

3 broadcastReceiver超过10s响应时间

4 在service中执行耗时操作

典型场景:

  • UI线程进行网络请求、数据库操作、文件操作等,导致UI线程无法计算处理用户输入;

  • UI线程等待子线程释放某个锁,从而无法处理用户输入请求;

  • 耗时的动画需要大量计算,导致CPU负载过重。

Handler、Thread和HandlerThread的差别

发表于 2019-04-05 | 分类于 Android
  • Handler是Android中用于处理线程间通信的组件(常用于异步更新UI)

  • Thread是java中的线程类

  • HandlerThread是Thread的一个子类(谷歌封装的),在HandlerThread类中存在一个Looper对象,用于消息的取出和处理

在线程中处理消息时,如果不使用HandlerThread的时候,只使用Handler+Thread时,需要手动去调用Looper.prepare()和Looper.loop()。(如果一个线程要处理消息,那么它必须拥有自己的Looper,并不是Handler在哪里创建就可以在哪里处理消息。)

在Android中写出优雅的异步代码

发表于 2018-12-20 | 分类于 Android

什么是异步代码:不是按顺序执行的代码

异步的目的

  • 提高CPU利用率
  • 提升GUI程序的响应速度
  • 异步不一定快

RxJava异常处理

RxJava取消处理

Kotlin协程

1…45

Zhujiaqqq

Java Android Python Algorithm and Machine learning

43 日志
6 分类
55 标签
© 2019 Zhujiaqqq
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4