Android重难点解析
  • 前言
  • Handler机制
    • Handler、Looper、MessageQueue的关系是什么?
    • Looper、Thread、ThreadLoacal的关系是什么?
    • Message如何被分发到Handler.handlerMessage()?
    • Message是如何实现复用的?
    • FrameWork中哪些模块用到了Handler机制?
    • 使用Handler的正确姿势是什么?
    • 总结
  • Activity机制
    • Launcher是如何实现开启一个App的?
    • Activity在各种状态下的生命周期
    • Activity与Window是什么关系?
    • setContentView()之后是如何实现界面显示的?
  • View机制
    • ViewGroup和子View在测量、布局、绘制的先后顺序是什么?
    • 从startActivity()到UI对用户可见的过程中发生了什么事情?
    • Touch事件分发机制
  • 异步机制
    • AsyncTask的版本变更之谜
    • AsyncTask的实现原理
    • Picasso是如何实现异步加载图片的?
    • HandlerThread和IntentService
  • 内存管理机制
    • 如何防止发生内存泄露?
    • 如何发现内存泄露?
    • Java内存回收机制
    • 如何防止OOM?
  • Java基础
    • 线程同步
  • Android系统机制
    • zygote是什么
    • SystemServer是什么?
    • ActivityManagerService是什么?有什么作用?
    • App的主线程消息队列是何时建立的?
    • 为什么选择Binder作为Android的进程间通讯方式?
  • WebView机制
    • 如何避免WebView造成的内存泄露?
  • 数据持久化机制
    • ContentProvider的权限控制
    • ContentProvider的CRUL操作为什么需要线程同步?
    • 文件缓存应该放在哪里?
    • SharedPreferences在使用时有哪些注意事项?
    • 如何优化Sqlite数据库的操作?
  • Fragment机制
    • 如何解决Fragment重叠的问题?
    • Fragment的完整生命周期
  • Framework重难点
    • 如何理解Zygote和ServerManager这两个进程?
  • 单元测试
    • 为什么写单元测试?
Powered by GitBook
On this page

Was this helpful?

前言

一直想写一本好书。

在这之前,因为在CSDN博客比较活跃,所以有几位编辑找我商量写书的事情,然而我自己最清楚自己的技术水平,感觉沉淀太少,时机还未到,即使真写出来,也不过是误人子弟,浪费纸张,无太大价值。

但是后来我又一想,能不能趁着这个机会把自己的知识体系整理和提升一下呢?现在的网络传播这么快,写一本电子书也是很不错的呀!既能够整理一下这一段时间的学习心得,也能够把一些知识深入一下,虽然看了好多的技术文章,但是理解很肤浅,正好可以再次深入一下!

于是,我打算写这样一本电子书了!

在我心目中,一本好书的定义是这样的:

  1. 看完要让人有收获,不管大小,这是一本书的最基本的价值

  2. 书的内容读起来应该让人畅快淋漓,不管是措辞、语句、代码格式,还是在内容的选题上,每一章都应该有一个明确的主题,读完一章就有一章的收获

  3. 如果能在内容之中穿插着一些学习技巧、学习经验、项目经验,那就再好不过了!

从题目上你可以看出这本书的主题内容就是Android中的"重难点",这里的重难点并不是说内容晦涩,而是指那些在Android开发中接触的比较多的知识点,这些知识点的使用方法很简单,但是在其背后却隐藏着很大的秘密。学习Android开发,不应该只学会使用某些知识点,因为Android的开源特性,我们应该深入到FrameWork层,了解其背后的运行机制以后,碰到的很多问题就迎刃而解了。

本书面向的读者群体是开发经验在1-2年的初中级开发者,采用问答的形式,相信读完此书以后,你会有一定的提升的!

我在学习这些知识的过程中,研究了很多的博客文章,在这里感谢这些喜欢分享的朋友们的帮助,我会把一些参考文章在每一章的最后列出,再次感谢这些前辈和布道者的分享精神!

由于在文章中会涉及到一些代码的列举,如果一些代码与要讨论的问题关系不大,我将会以下面的方式省略,所以你可以把本书中的源码看做是伪代码,如果你想查看实际代码,请按照文件路径自行查找。

frameworks/base/core/java/android/app/ActivityThread.java

 public static void main(String[] args) {

        ...

        Looper.prepareMainLooper();

        ActivityThread thread = new ActivityThread();
        thread.attach(false);

        if (sMainThreadHandler == null) {
            sMainThreadHandler = thread.getHandler();
        }

        AsyncTask.init();

        Looper.loop();

        throw new RuntimeException("Main thread loop unexpectedly exited");
    }
}

另外,由于Framework中存在很多不常见的类,在文章中我只会简单的提到某个类的作用或者是与其他类的关系,更详细的信息请自行参考源码。

好了,让我们开始这本书的创作吧!

NextHandler机制

Last updated 6 years ago

Was this helpful?