Android开发
DJH2717
努力从来都不会白费!
要学会发现问题,揣摩问题,思考问题,最后再解决问题!!
展开
-
RecyclerView的数据刷新
今天在写Demo的时候,看到官方对notifyDataSetChanged()这样描述的一段话: 重点内容 If you are writing an adapter it will always be more efficient to use the more specific change events if you can. Rely on notifyDataSetChang...原创 2018-07-17 09:36:55 · 10416 阅读 · 1 评论 -
Android 屏幕适配
Android手机,众所周知的碎片化,市面上的手机的分辨率估计都有好几千种.......(无奈).......那么身为Android开发人员的我们,应该怎样去对不同的手机的分辨率进行适配,从而可以让UI元素在不同的手机上面得到较为一致的显示呢?首先转载一篇关于Ui适配的文章:AndroidUI适配.目前主流的适配方案大致就这两种: 最小宽度限定符适配, 也就是本文说描述的. 还有一种便...转载 2018-08-15 19:25:38 · 251 阅读 · 0 评论 -
Android事件分发机制
在此简单记录Android中的事件分发机制:当触发一个点击事件时,最先会由 Activity 的 dispatchTouchEvent 方法接受到事件,默认是返回 false, 需要调用父类的方法作为返回值, 才能进行正常的事件分发.接下来是由 ViewGroup 的 dispatchTouchEvent 接受到事件, 该方法的返回 false 会直接回到父控件的 onTouchEvent...原创 2018-08-25 19:41:20 · 337 阅读 · 2 评论 -
主线程中的Looper.loop()死循环为什么不会导致ANR?
源码的 ActivityThread 类中有这么一段代码:public final class ActivityThread { public static void main(String[] args) { ... Looper.prepareMainLooper(); // 注意此处 ActivityThre...原创 2018-09-11 21:29:03 · 1724 阅读 · 0 评论 -
Activity生命周期
几乎绝大部分Android书籍,无论是入门还是进阶书籍都会有 Activity 生命周期的介绍, 由此可见它在 Android 开发中的地位, 因此特地详细总结记载 Activity 生命周期的的各种回调. 我们从两个方面分析 Activity 生命周期的回调过程以及需要注意的 细节 问题.典型情况下的生命周期分析:onCreate:表示 Activity 正在被创建...原创 2018-09-13 19:12:39 · 184 阅读 · 0 评论 -
Fragment生命周期
和 Activity 一样, Fragment 也有其相应的生命周期, 但是和 Activity 生命周期有着什么样的联系, 又会在 Activity 生命周期的生命阶段分别会回调到 Fragment 生命周期的哪些方法呢? 让我们开始探索: 首先, Fragment 的生命周期总共有 11 个, 比 Activity 的 6个 (不包括 onRestart) 多了 5 个, ...原创 2018-09-14 14:42:20 · 1534 阅读 · 0 评论 -
浅析 Fragment 回退栈
在我们使用 fragment 的时候 ,总是会使用到 fragmentTransaction 的 add remove 和 replace 方法, 这些方法对 fragment 生命周期有着不同的影响, 在来个 回退栈, 就更加容易混淆. 我们通过开启回退栈和关闭回退栈来分别查看 fragment 的生命周期来了解 fragment 回退栈对其生命周期的影响.不使用任何回退栈...原创 2018-09-14 20:46:16 · 851 阅读 · 0 评论 -
Android 常见的性能优化
其实说白了, 性能优化主要就是围绕如下四个方面去进行扩展和探索:1, 快 --- 速度快2, 稳 --- 稳定, 不动不动就 crash3, 省 --- 省内存, 省电量,流量4, 小 --- APK小于是乎, 本文也围绕如上 四个 方向, 从三个方面入手, 总结看过的书籍和博客中所说到的性能优化的手段. 1, 布局优化尽可能减少布局嵌套, 布局树不要超过 1...原创 2018-10-11 20:06:29 · 171 阅读 · 0 评论 -
从源码的角度分析Android中的Handler机制的工作原理
通过对源码的查看,特此记录Android中handler机制的工作方式 我们要在Android中使用Handler机制,必须要经过如下三个过程: 在一个线程调用 Looper.prepare() 来创建一个Looper. (主线程不需要,因为源码中在Activity创建的时候已经调用过一次了) 调用 new Hand...原创 2018-07-21 18:16:29 · 283 阅读 · 0 评论 -
AsyncTask内部原理
AsyncTask 是一个封装了 ThreadPoolExecutor 和 Handler 机制的抽象类,其作用是方便开发者进行多个异步任务时无需手动在每个线程中都采用 Handler 机制来通知 UI 线程进行操作, 从而简化了多个异步任务与 UI 线程的通信的情况.我们先留下几个问题, 在后续的源码探索的过程中进行验证:AsyncTask 类 为什么必须要在主线程中进行初始化 ? ...原创 2018-07-28 18:29:08 · 1168 阅读 · 0 评论 -
FragmentPagerAdapter与FragmentStatePagerAdapter的区别
https://www.jianshu.com/p/25a02f5a15b3转载 2018-07-19 11:30:44 · 127 阅读 · 0 评论 -
从源码的角度分析为什么fragmentPagerAdapter.notifyDataSetChanged()无效!
首先转载一篇博客,了解fragmentPagerAdapter和fragmentPagerStateAdapter的区别,对后面的分析很重要: https://blog.csdn.net/DJH2717/article/details/81101834通过上面的博客,我们大致知道了这两个适配器对fragment的生命周期影响是不一样的,主要是因为他们desto...原创 2018-07-19 12:03:43 · 324 阅读 · 0 评论 -
ValueAnimator.ofObject的理解
ValueAnimator.ofObject意义在于可以将一个对象过渡到另外一个对象, 其实现的关键在于对Evaluator实现.** * ObjectAnimator.ofXXX和ValueAnimator.ofXXX()与ValueAnimator.ofObject * 最本质的区别是前面两者是把某一个对象的具体的某一个属性过渡到目标值, * 而且该属性必须拥有get和set方法,否则...原创 2018-07-13 12:21:07 · 682 阅读 · 0 评论 -
对drawable.getIntrinsicXXX返回值的思考
当我们在粘贴一张图片到AS的drawable目录下的时候,不知道你有没有注意到会让你选择具体的分辨率的文件夹.前段时间在写一个自绘VIew的时候用到了这个方法,发现返回值并不是我图片的分辨率,很是郁闷,于是乎自己就思考和实践后发现,在此记录:1,当我们把图片粘贴到drawable目录下,默认是放在mdpi目录下的.(还有一个没有具体dpi的目录,其效果就是mdpi,不知道老外什么意思........原创 2018-07-13 12:41:31 · 257 阅读 · 0 评论 -
Activity启动时,view的绘制流程.
** * 经过打log发现,activity的生命周期中,setContentView调用后并不会马上进行view的初次测量和绘制 * 要等到调用onResume之后才会开始测量并且绘制,所以在onCreate和onResume方法中获取一个view的宽高都会是0 * * 因此,如果要在Activity的生命周期类获取view的宽高,可以采用以下几种方法: * 1,view....原创 2018-07-13 12:57:38 · 505 阅读 · 0 评论 -
从源码的角度解析 view 的测量流程
首先,我们在这里提出两个疑问:viewGroup 是如何遍历所有的子 view, 并进行测量的? 这个遍历最开始的起点是哪? viewGroup 为何没有重写 onMeasure 方法? measureChildren , measure , onMeasure 这些方法之间的调用关系是什么?在此说明一下, 此篇文章需要读者了解 Android 窗口机制, 并且知道 ViewRootI...原创 2018-09-21 16:10:45 · 208 阅读 · 0 评论