本篇文章主要总结过去在项目里遇到的由于 Fragment
误用带来的一些问题,不涉及 Fragment
的具体用法。这里说的 Fragment
带来的问题,基本是由 Activity
被系统销毁后自动重新创建所引发的。下面我们从 Fragment
的基本使用、参数传递和 ViewPager
的交互这三个方面来分别讨论。
在这之前,好几次想了解 ScrollView
实现,粗略翻翻,每次都没抓到要点;又实在没有非常迫切的需求,也就没有花太多心思了。最近工作上有个任务需要类似 ScrollView
的实现,只得下功夫研究一翻,于是有了这篇小短文。
首先要澄清的是,我不打算去分析 ScrollView
的源码,我们的目的只是为了弄清楚他最根本的实现方式。另外,涉及 View
的绘制时,也仅仅当他是一个黑盒,我们将会了解到如何使用 View
提供的 API 来实现自己的 scroll view。
考虑这样一个需求,我们有两个业务 A 和 B,他们共同使用一个硬盘缓存 DiskCache
的实现。由于在单个业务内只需要一份缓存,这很容易让我们想到单例模式。在本篇文章中,我们从最简单的传统的单例模式的实现开始,一步步实现一个优雅高效的多实例的单例模式。
为了跟老罗的书保持一个比较一致的步伐,这一篇开始我们来看 logd 的实现。当然,这个 logd 不是老罗书里讲的 log 驱动,而是在应用层实现的一个守护进程。
本来按顺序这一篇应该是 logd,但突然有点好奇 SP 在保存数据的时候是怎么同步的,就还是先看 SP 吧,当做在开始啃 logd 这个硬骨头前轻松一下(虽然这么说,SP 还是有很多值得我们学习的地方的)。
继上篇我们学习了 Android 轻量级指针的实现,是时候来看“重量级”指针的实现了。在 Android 里,“重量级”指针指的是 RefBase
和 sp/wp
配合使用的情况,它提供了完整的强、弱指针的支持。