Android高级进阶之旅
文章平均质量分 94
Android知识技巧和进阶文档整理
Alex@W
这个作者很懒,什么都没留下…
展开
-
Android插件化——高手必备的Hook技术
1、Hook技术之动态代理Hook技术的基础和必备技术是动态代理,关于动态代理的使用和原理参见Java动态代理2、Binder Hook(Hook 系统服务)2.1、系统获取服务的原理ContextImpl.getSystemService(String name) @Overridepublic Object getSystemService(String name) { ...原创 2019-08-11 17:27:32 · 1431 阅读 · 0 评论 -
Androdi热修复之路 —— 理解Multidex 分包原理
1、使用使用配置在build.gradle中添加支持MultidexdefaultConfig{ multiDexEnabled true }添加Multidex依赖implementation 'com.android.support:multidex:1.0.3'在Application中初始化MultidexMultiDex.install(this...原创 2019-06-03 18:02:42 · 931 阅读 · 0 评论 -
Android热修复之路——ClassLoader详解
1、ClassLoader简介在应用程序打包成APK时,程序中所创建的类、导入和引用的类都会被编译打包成一个或多个的dex文件中,打包成的dex文件在使用中如何加载类?答案就在ClassLoader中,ClassLoader从字面就可以知道它主要用于类的加载,当代码中需要调用某个类时,ClassLoader就会遍历所有的dex文件中的类并保存在集合中,然后从集合中加载指定的Class。2、Cl...原创 2019-05-22 22:49:03 · 872 阅读 · 0 评论 -
Android进阶知识树——ContentProvider使用和工作过程详解
UriContentProvider使用MimeType权限工作过程前言1、Uri基础Uri的四个组成部分:content://contacts/people/5schema:已由Android固定设置为content://authority:ContentProvider权限,在AndroidMenifest中设置权限path:要操作的数据库表Id:查询的关键字(...原创 2019-01-27 10:12:12 · 650 阅读 · 0 评论 -
Android进阶知识树—— 理解WindowManager
1、初识Windowval layoutParams = WindowManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE sh...原创 2019-01-28 11:10:09 · 505 阅读 · 0 评论 -
Android进阶知识树——AsyncTask的使用和源码分析
1、概述AsyncTask的作用:首先看看API中对AsyncTask的官方解释<p>AsyncTask enables proper and easy use of the UI thread. This class allows you * to perform background operations and publish results on the UI thr...原创 2018-08-25 16:12:22 · 402 阅读 · 0 评论 -
Android进阶知识树——RemoteViews详解
1、前言2、基础知识2.1、控制限制对于小工具可用的唯一手势触摸垂直滑动2.2、 支持布局支持的布局FrameLayoutLinearLayoutRelativeLayoutGridLayout支持的View一般View:Button、ImageButton、TextView、ImageView、ProgressBar集合:ListView、GridV...原创 2019-01-23 14:55:40 · 3050 阅读 · 0 评论 -
Android进阶知识树——Android Handler消息机制
1、概述在安卓程序启动时,会默认在主线程中运行程序,那如果执行一些耗时的操作则UI就会处于阻塞状态,出现界面卡顿的现象,再者用户的多种操作,系统是如何做到一一处理的,系统又是如何管理这些任务的,答案这就是今天的主题Android的消息机制;Android处理消息的方式——handler、Looper 和 MessageQueueHandler :负责将任务添加到队列,执行结束后在主线...原创 2018-08-18 12:52:02 · 670 阅读 · 0 评论 -
Android进阶知识树——View、ViewGroup事件分发机制详解
对于Android开发者来说,自定义View是必须攻克的一关,也是从初级工程师迈向高级的进阶关卡,要想通过此阶段,除了必须掌握View的测量、绘制、滑动等基础知识外,更要掌握View的核心知识点:View的事件分发,本篇就一起从源码的角度分析View和ViewGroup的事件分发机制;1、View的事件分发在我们平时的使用或写自定义View时,都会直接或间接的使用View的事件分发,Vie...原创 2018-12-19 21:50:37 · 2764 阅读 · 0 评论 -
Android进阶知识树——Android 多进程、Binder 你必须知道的一切
概述想当初在第一次拜读《Android艺术开发探索》时,深感真的是一本很“艺术”的书(因为当初菜的看不懂…),随着自己的成长和多次阅读,从开始的完全不懂到现在的有所理解、使用和总结,才体会到其中探索的奥妙,现在跟着安卓高级开发的学习路线,进一步学习、总结和梳理知识。多进程作为Android开发者迈向高级开发者的第一关,也使许多初级开发者望而却步,这也是每个开发者必经阶段,正好笔者在公司的开发项...原创 2018-12-08 23:23:57 · 1154 阅读 · 0 评论 -
Android进阶知识树——应用进程的启动过程
1原创 2019-09-03 11:03:49 · 574 阅读 · 0 评论 -
Android进阶知识树——Android系统的启动过程
1原创 2019-09-02 15:14:47 · 601 阅读 · 0 评论 -
Android进阶知识树——理解系统服务WindowManagerService
属性介绍创建过程添加过程删除过程原创 2019-08-31 15:52:01 · 595 阅读 · 0 评论 -
Android 插件化——Java动态代理
最近本着不求甚解的态度重温了一下主流框架的源码,加上之前的笔记,所以趁热打铁的总结一下,学习框架或开发框架所必备的基础知识:Java反射 Java注解 注解代码自动生成 Java动态代理 AOP1、简介代理的理解:代理是一种软件设计模式,通过代理的方式实现程序的扩展、修改和隐藏的等,具体上讲代理这种设计模式是通过不直接访问被代理对象的方式,而访问被代理对象的方法 适应场景:设...原创 2018-09-29 16:22:26 · 766 阅读 · 0 评论 -
Android插件化——VirtualAPK接入与源码分析
1、宿主工程引入VirtualApk在项目Project的build.gradle中添加依赖dependencies {classpath ‘com.didi.virtualapk:gradle:0.9.8.6’}在宿主app的build.gradle中引入VirtualApk的host插件apply plugin: ‘com.didi.virtualapk.host’在app中添...原创 2019-08-12 18:35:27 · 911 阅读 · 0 评论 -
Androdi热修复之路 ——热修复框架Tinker 源码分析
1、Application的生成2、下载补丁合成Patch包在程序中开启加载补丁包TinkerInstaller.onReceiveUpgradePatch(getApplicationContext(), Environment.getExternalStorageDirectory().getAbsolutePath() + "/patch.patch");通过网络...原创 2019-08-14 18:20:37 · 387 阅读 · 0 评论 -
Android进阶知识树——Android四大组件启动过程
ActivityActivity的启动是从Activity的startActivityForResult(),在startActivityForResult()中调用Instrumentation.execStartActivity()execStartActivity():调用IActivityManager代理类执行Activity的启动,IActivityManager在此处采用B...原创 2019-08-13 19:02:17 · 935 阅读 · 1 评论 -
Android进阶知识树——JNI和So库开发
1、Jni基础知识Jni使用场景需要调用Java语言不支持的依赖时,整合非Java语言开发的系统,如C、C++节省运行时间提高运行效率,如:音视频等Jni类型和Java类型的映射关系native方法与Jni映射实例public static native String action(short s , int i, long l, float f, double d,...原创 2019-08-18 14:39:11 · 906 阅读 · 0 评论 -
Android进阶知识树——应用安全基础篇
1、Smile语法入门Smali是Java虚拟机中的一种.dex格式文件汇编器,它采用一种宽松式的Jasmin/dedexer的语法,表达了.dex格式所有功能和信息原始类型映射关系v :void ()Z:booleanB:byteS:shortC:charI:intJ:longF:floatD:double类的表示:Ljava/lang/String;L:...原创 2019-09-10 11:37:54 · 528 阅读 · 0 评论 -
Android进阶知识树——必须会的组件化技术
1、概述笔者从事智能家具行业的开发工作,也是从公司创业团队工作到现在,对于公司的项目从1.0版本开始接手一直到现在,虽说项目不是很大但麻雀虽小五脏俱全,在项目和团队的不断扩大、暴露出的问题也不段增多,组件化势在必行,本文就根据整个项目的发展,总结下组件化的实践流程;在最初的1.0版本中只是针对一个智能设备的操控和数据交互,项目本身就很简单此时也基本单人开发,所以所有的功能代码都直接在app中...原创 2019-08-27 17:18:58 · 473 阅读 · 0 评论 -
Android插件化——深入理解Context机制
1、原创 2019-08-18 16:53:30 · 735 阅读 · 0 评论 -
Android进阶知识树——23种设计模式详解
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式创建模式:1、 定义2、角色3、优点4、使用场景5、使用实例...原创 2019-09-10 11:16:04 · 716 阅读 · 0 评论