Android知识体系
文章平均质量分 71
收纳了Android知识体系中个大类知识点,比如IPC, View实践和事件机制,四大组件源码分析,消息机制等。
加入了很多源码解析,适合对Android有些基础。
主要对Android体系进行梳理和对应模块的源码分析
vivianking68
今日事今日毕,生命经不起等待!!
展开
-
[基础] 1. Activity的生命周期和启动模式
生命周期先看网上这张经典图AMS -> ApplicationThread -> 通过ActivityThread H handler切到主线程,handleLaunchActivity会完成OnCreate,onStart,onResume的调用每个生命周期的意义先来了解下每个生命周期的意义 名字 意义 Activity状态 备注...原创 2018-03-15 17:08:27 · 184 阅读 · 0 评论 -
[进阶] Android Fragment
Fragment 生命周期Fragment必须总是绑定到一个activity中。虽然有自己的生命周期,但同时被Activity的生命周期直接影响结合代码学习FragmentAndroid Fragment...原创 2018-03-16 13:57:22 · 186 阅读 · 0 评论 -
[进阶] Binder理解和源码解析
基础知识Android进程间的通讯没有沿用Linux的原有的通讯模式,而是采用新的通讯模式Binder.先了解下Linux原有的通讯方式:Linux进程间的通信方式和原理进程通信的应用场景一般包含数据/资源共享,数据传输,通知事件,进程控制。主动被动都有了。Linux原有的几种通信方式pipe管道消息队列(Message)信号量(Semaphore)共享内存(Share...原创 2018-03-16 14:14:19 · 424 阅读 · 0 评论 -
Android 小知识点 (一)
Android 查看每个应用的最大可用内存Android退出应用最优雅的方式android 输入法弹出时不能挡住按钮把布局顶上去WebViewJS和Java的安全交互Android混合开发之WebViewJavascriptBridge实现JS与java安全交互性能Android WebView:性能优化不得不说的事腾讯TBS X5 WebView的简单...原创 2018-03-27 12:55:25 · 185 阅读 · 0 评论 -
移动应用优化解决方案
前言移动应用优化是产品中非常重要,也是比不可少的一环。Android app优化主要包含size优化,性能优化,重构等。size优化,app减负是必不可少的一环。性能优化,提升UX体验的重要途径(当然Spec的定义也会直接影响UX)。性能优化主要关注重构:业务复杂度提示,需要重构提高易测性和扩展性,降低耦合其中性能优化又是特别重要的一环性能主要关注:launch ...原创 2018-04-12 10:07:35 · 587 阅读 · 0 评论 -
Android 小知识点 (二)
1. 解决依赖库冲突问题彻底弄清support支持库,以及v4 v7重复依赖问题深究Gradle管理依赖2. Android系统布局android.R.layout3. JRE 和 JDK 的区别是什么JRE可以支撑Java程序的运行,包括JVM虚拟机(java.exe等)和基本的类库(rt.jar等)JDK可以支持Java程序的开发,包括编译器(javac.ex...原创 2018-04-25 10:59:14 · 157 阅读 · 0 评论 -
[进阶] 源码-常用库
源码解析-目录原创 2018-04-25 11:20:07 · 126 阅读 · 0 评论 -
Android小知识点(三)
1. Java 9新特性2. ThreadLocal解决多线程不需要相互依赖的成员变量问题最常见的ThreadLocal使用场景为 用来解决 数据库连接、Session管理等3. Android 性能优化之String篇重用的StringBuilder在拼接动态字符串时,尽量用 StringBuffer(同步) 或 StringBuilder的 append,来减...原创 2018-05-08 13:48:38 · 309 阅读 · 0 评论 -
Activity知识体系
Android知识体系图2018/3/20 更新原创 2018-03-15 10:35:56 · 247 阅读 · 0 评论 -
[进阶] UI - Android 自定义View
为什么需要自定义View现有的View满足不了你的需求,也没有办法从已有控件派生一个出来;界面元素需要自己绘制。现有View可以满足要求,把它做成自定义View只是为了抽象为这个自定义View提供若干方法,方便调用着操纵View。通常做法是派生一个已有View,或者结合xml文件直接inflate。Attention能够用Android基础控件解决的问题就尽量用基础控...原创 2018-03-16 09:57:38 · 224 阅读 · 0 评论 -
[基础] Android 源码地址 和 SDK版本
Android 源码AndroidXRef (Google Git)[https://android.googlesource.com/?format=HTML]Android平台版本Google Dev Android 信息中心原创 2018-03-16 09:53:46 · 226 阅读 · 0 评论 -
[基础] 3. Android四大组件
Android四大组件四大组件:Activity,Service,Broadcast,ContentProvider只有BroadcastReceiver可以在AndroidManifest或代码中册,其他都必须在AndroidManifest文件中注册 只有ContentProvider的调用不需要借助Intent,其他三个组件都需要借助IntentActivity是一种展示型组...原创 2018-03-13 13:35:00 · 209 阅读 · 0 评论 -
[基础] 3.1 Activity的工作过程
Activity的工作过程核心流程图:startActivity -> AMS远程调用ApplicationThread->通过ActivityThread H handler切到主线程创建Activity,回调OnCreate等关键代码片 一 : Activity 方法 startActivityForResultpublic void startActivi...原创 2018-03-13 13:34:15 · 269 阅读 · 0 评论 -
[基础] 3.2 Service工作过程
Service活动状态有两种:启动状态和绑定状态 (两种可以共存)使用启动Intent intent = new Intent(this, MyService.class);startService(intent);绑定Intent intent = new Intent(this, MyService.class);bindService(intent, mS...原创 2018-03-13 14:50:34 · 254 阅读 · 0 评论 -
[基础] 3.3 BroadcastReceiver的工作过程
基础知识从类型上可以分为有序广播和标准广播两大类 从方法上分为静态注册的广播和动态注册的广播 在Android中,广播是跨进程的,因此在进程间传输数据时候,可能会泄露安全信息。系统还提供了本地广播(LocalBroadCastReceiver)来进行广播的安全管理使用定义广播接收者:继承BroadcastReceiver,重写onReceiveclass MyRec...原创 2018-03-13 16:49:39 · 216 阅读 · 0 评论 -
[基础] 3.4 ContentProvider的工作过程
ContentProvider启动过程启动过程: ActivityThread main -> AMS 远程调用ApplicationThread -> 通过ActivityThread的H handler切换到主线程转载ContentProvider入口是ActivityThread的main,ActivityThread是管理应用所在进程的主线程的,也就是UI线程的管...原创 2018-03-14 11:28:17 · 387 阅读 · 0 评论 -
[基础] 4. 理解Window和WindowManager
Window和WindowManagerWindow(abstract class)是一个抽象的概念。每个Window都对应一个View和一个ViewRootImpl,ViewRootImpl是联系桥梁。因此Window并不是实际存在的,是以View的形式存在。 我们通过WindowManager (interface extends ViewManager)访问Window。 ViewMa...原创 2018-03-12 19:21:29 · 210 阅读 · 0 评论 -
[基础] 6. 源码解析-消息机制
解析总结ReferenceAndroid消息源码分析原创 2018-03-09 15:27:01 · 144 阅读 · 0 评论 -
[进阶] 源码解析-AsyncTask
用法继承AsyncTask,重载方法调用execute启动解析总结核心流程在主线程提交任务到线程池线程池运行doInBackground耗时任务线程池运行完毕后,使用Handler切换到主线程处理结果AsyncTask中CORE_POOL_SIZE大于2小于4:Math.max(2, Math.min(CPU_COUNT - 1, 4));最大POOL_...原创 2018-03-09 15:27:18 · 238 阅读 · 0 评论 -
[基础] 5.2 View的事件体系和冲突
View 基础知识view代表了一个控件。ViewGroup也是view。 MotionEvent:手指接触屏幕后所产生的一系列事件(ACTION_DOWN、ACTION_MOVE、ACTION_UP等) 正常情况下,手指触屏点击事件有:(1) 点击屏幕后离开,事件顺序为 DOWN -> UP (2) 点击屏幕后滑动一会再离开,事件序列为DOWN -> MOVE -&...原创 2018-03-12 14:31:32 · 168 阅读 · 0 评论 -
[基础] 5.1 Android View的绘制过程
View的绘制过程View的绘制首先起于ViewRootImpl,并且View的三个流程也是通过ViewRootImpl来完成。 过程中有很多组件的身影,比如WindowManager,ActivityThread,Activity,DecorView,ViewRootImpl(连接WindowManager和DecorView的纽带)绘制流程View的绘制首先起于ViewRoo...原创 2018-03-12 11:50:12 · 135 阅读 · 0 评论 -
[基础] 2. IPC 进程间通信
一、IPC含义IPC Inter-Process Communication.含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。二、Android中的多进程模式在Android中使用多进程只有一种方法:给四大组件(Activity,Service,Receiver,ContentProvider)在AndroidMenifest中制定android:process...原创 2018-03-12 14:37:51 · 315 阅读 · 0 评论 -
[基础] 7. Android的线程和线程池
Android的线程默认一个进程只有一个主线程,其他线程都是子线程/工作线程。主线程主要负责展示和交互,耗时的任务交给子线程除了Java的Thread,Android中还有一些特有的线程形态AsyncTask:doInBackground耗时任务默认在串行线程中,其他运行在主线程。源码解析看这里HandlerThread:继承Thread,优点是有自己的消息循环。适合需要给子线程传...原创 2018-03-14 15:36:46 · 172 阅读 · 0 评论 -
[基础] 8. Bitmap的加载和Cache
Bitmap的高速加载Android的Bitmap使用不当经常会出现OOM,因此图片的加载和缓存是非常重要的一环四类加载方法BitmapFactory提供了四类加载图片的方法,从不同来源加载出一个Bitmap对象,最终的实现是在底层实现,对应BitmapFactory的几个native方法。四类方法支持BitmapFactory.Options参数decodeFile:从文件系统...原创 2018-03-14 18:13:11 · 217 阅读 · 0 评论