- 博客(6)
- 资源 (1)
- 收藏
- 关注
原创 【内存泄露】由Handler引发的内存泄漏的思考
前面Looper与Handler解析提到过下面这段代码会出现内存泄漏,其实在Android Studio中会提示这个问题: 在编辑器里面会自动将这段代码标出来,我们看看提示信息是什么?This Handler class should be static or leaks might occur (null) less... (Ctrl+F1) Since this Handler is d
2015-07-26 20:02:57 4139 6
原创 HandlerThread与IntentService原理解析
前面我们讲到了Looper和Handler,只是为了写这篇文章做铺垫,其实在前面的使用中,我们已经可以感觉到了一些局限性,我们怎样来自己写两个线程是它们直接进行通信呢?在看这篇文章之前,可以先看看Looper与Handler解析这篇文章。 实现通信也很简单,只是要使用Handler的另一个构造函数,在Handler中有另一个比较有用的构造函数:Handler(Looper looper),这样自己
2015-07-25 20:34:10 1142
原创 Looper与Handler解析
写这篇文章的目的并不仅仅是为了将Looper和Handler,一方面是为后面其他相关的介绍做铺垫,另一方面是这个东西比较重要,自己也想认真的梳理一下,也想提醒一下大家,虽然关于这个的介绍网上已经有很多。大家通常都会使用Handler+Thread组合,在Thread里面执行耗时的操作,然后使用Handler来执行UI的更新操作,但可能根本不知道其中的缘由,或者根本就不知在Handler的背后还有L
2015-07-25 16:38:08 953
原创 浅析notifyDataSetChanged内部工作流程
首先我们知道notifyDataSetChanged是Adater的一个方法,主要用来通知ListView,告诉它Adapter的数据发生了变化,需要更新ListView的显示,所以当Adapter的数据内容改变时会调用notifyDataSetChanged()方法。 直接看看BaseAdapter中notifyDataSetChanged的源码实现,看notifyDataSetChanged是
2015-07-31 19:48:51 13929 2
原创 浅析PackageManager的工作流程
我们在使用PackageManager的时候,一般都是直接获取到PackageManager对象,然后就直接调用它的函数进行相应操作,但它内部究竟是怎样工作的呢?其实它内部获取的是远程服务,真正调用的都是服务中的操作。 我们这里仅仅停留在java层进行讨论,没有深入到底层C/C++实现。在PackageManager的说明中有这样一段话:/** * Class for retrieving va
2015-07-30 21:05:08 1510
原创 Activity中Window对象的创建过程
看过Activity源码的同胞应该知道,Activity就是对Window对象进行了一个包装,里面的很多操作实质是由Window来完成的,但是Window类是一个抽象类,那么Activity里面的Window属性mWindow所引用的肯定不是Window对象本身,而是它的一个子类,那么到底是那个类,这个对我们后面代码的跟踪非常关键,因为如果找不到这个类,就找不到Activity的很多操作的实现是如何
2015-07-30 12:48:49 1296
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人