架构师训练营
惟日孜孜 无敢逸豫
展开
-
Android 插件开发之三:技术准备1:apk打包+dex加载+资源文件加载+框架Demo
app打包过程 首先我们来了解一下插件化实现的原理,由于插件化原理涵盖内容太多这里只是介绍一下核心内容;我们了解一下app打包过程。请看下图: 上面是android打包形成apk的一个过程,可以发现android开发主要的部分是整合编译代码、整合编译资源,然后就是安全签名保证apk完整性。我们再看一张图: #####上面是一个apk解压之后的文件,可以看出,里面几个比较重要的部分: ...原创 2019-03-31 17:02:33 · 665 阅读 · 0 评论 -
Android 插件开发之二:组件开发:组件框架选型+组件间通信+组件依赖
在Android SDK一文中,我们谈到模块化和组件化,现在我们来聊聊组件化开发背后的哪些事.最早是在广告SDK中应用组件化,但是同样适用于普通应用开发 以下高能,请做好心理准备,看不懂请发私信来交流.本文不推荐新手阅读,如果你刚接触Android开发不久,请立刻放弃阅读本文. 模块化 组件化不是个新概念,其在各行各业都一直备受重视.至于组件化什么时候在软件工程领域提出已经无从考究了,不...原创 2019-03-31 16:49:28 · 322 阅读 · 0 评论 -
Android 插件开发之一:概述:模块开发+组件开发+插件开发
架构: 所谓架构,无非两个方面: 分层和通信方式。 其实广义的架构也可以说是这两个方面:子模块(子系统)划分和通信。 子模块划分: 除了大家公认的common部分, 业务模块的划分尤为重要,相比于狭义上的架构,广义上的子系统的划分的关注点,很考验技术经验以及对业务的理解。 通信方式: 模块化的通信方式,无非是相互引入;我抽取了common, 其他模块使用自然要引入这个module 组件...原创 2019-03-30 23:14:30 · 300 阅读 · 0 评论 -
Android 插件开发之七:插件开发:Dex文件动态加载(应用场景:后台更新Apk插件功能)
TODO原创 2019-04-03 23:56:39 · 290 阅读 · 0 评论 -
Android 插件开发之六:插件开发:View 的跨进程传递(应用场景:广告位)
热加载第三方应用的View,实现动态修改宿主应用 这里是Demo,也就是前期的技术预言,所以不需要做一个完整的项目。 要点:能够加载到第三方apk里面的View,并且显示出来,同时可以操作,进行数据交互。 - 有宿主,和第三方APK - 第三方apk已经安装,所在目录是/system/app/ - 能够进行数据交互,除了简单的点击以外,还可以进行复杂的操作。 实现过程 创建一个宿主项目...原创 2019-04-03 23:54:41 · 824 阅读 · 0 评论 -
Android 插件开发之五:技术准备3:Java反射机制
一、获得Class对象 Class<?> c = Class.forName("classname"); 抛出ClassNotFoundException 二、获得实现接口 Class<?> inters[] = c.getInterfaces(); for(int i=0;i<inters.length;i++){ System.out.prin...原创 2019-04-02 00:11:43 · 153 阅读 · 0 评论 -
Android 插件开发之四:技术准备2:Java类加载+ 双亲委派模型+Android类加载器
类加载器 Java虚拟机类加载过程是把Class类文件加载到内存,并对Class文件中的数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。 在加载阶段,java虚拟机需要完成以下3件事: a.通过一个类的全限定名来获取定义此类的二进制字节流。 b.将定义类的二进制字节流所代表的静态存储结构转换为方法区的运行时数据结构。 c.在java堆中生成一个代表该类的...原创 2019-04-02 00:05:00 · 286 阅读 · 0 评论 -
Android 进阶技术汇总九: 跨平台 NDK+JNI(c/c++) 和 JS与WebView交互 方案实现
1. JNI 参照:https://blog.csdn.net/tanningzhong/article/details/48447249 2. JS 参照:https://www.cnblogs.com/zhangqie/p/6387433.html原创 2019-03-27 22:44:15 · 786 阅读 · 0 评论 -
Android 进阶技术汇总八: 跨进程 通信(binder+aidl)+数据访问(ContentProvider :DB&SharedPreference)
1. binder原理+aidl 使用参照:https://blog.csdn.net/gh1312824890/article/details/82255792 2. 跨进程的数据访问:ContentProvider使用方法参照:https://blog.csdn.net/shaochen2015821426/article/details/79748487 备注:ContentPr...原创 2019-03-27 22:40:38 · 410 阅读 · 0 评论 -
Android 进阶技术汇总十一: 网络请求框架比较(Volley、OkHttp3、Retrofit2.0)
一、为什么要使用网络开源框架 1.Android系统自带网络请求 Android系统自带的网络请求模块有两个,一个是HttpClient,另一个是HttpUrlConnection。 1.1. HttpUrlConnection HttpURLConnection是一种多用途、轻量极的HTTP客户端,使用它来进行HTTP操作可以适用于大多数的应用程序。虽然HttpURLConnection的A...原创 2019-03-27 23:33:18 · 361 阅读 · 0 评论 -
Android 进阶技术汇总十: 图片加载框架比较(ImageLoader+Picasso+Glide)
一、ImageLaoder介绍 <<Universal ImageLoader 是很早开源的图片缓存,在早期被很多应用使用 多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等 支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置 支持图片的内存缓存,文件系统...原创 2019-03-27 23:29:07 · 326 阅读 · 0 评论 -
Android 进阶技术汇总十三:动画比较:补间动画(Tween)+帧动画(Frame)+属性动画(Property)
前言: 1. 概念: 补间动画tween Animation:用于Activity|PopupWindow|AlertDialog等界面的Enter|Exit动画(没有改变View本身属性); 帧动画FrameAnimation:用于Android开关机动画; 属性动画 Property Animation:通过特定时间内修改View本身的属性+View重绘,实现视觉的动画效果。 2....原创 2019-04-03 23:06:46 · 303 阅读 · 0 评论 -
Android 进阶技术汇总一: 个性化控件(View) 方案汇总
前言:个性化控件(View): 主要介绍那些不错个性化的View,包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar、TextView、ScrollView、TimeView、TipView、FlipView、ColorPickView、GraphView、UI Style等等。 一、Lis...转载 2019-03-24 07:32:47 · 1000 阅读 · 0 评论 -
Android 进阶技术汇总二: 流行框架组件 方案汇总
前言:应用框架组件概述: 主要介绍移动应用开发涉及 推送、语音识别、音视频、图片、地图、定位、广告接入、后台统计分析、HTTP通信、分享、支付、数据解析、序列化、消息总线等 WebApp Cordova:org.apache.cordova:Cordova是PhoneGap贡献给Apache后的开源项目,是从PhoneGap中抽出的核心代码 HtmlSpanner:net.nigh...转载 2019-03-24 07:53:38 · 995 阅读 · 0 评论 -
Android 进阶技术汇总三: 异步任务:AsyncTask+HandlerThread+IntentService+AsyncQueryHandler
前言:Android 异步任务&多线程 技术点概述: ANR与异步任务:ANR为Android特有耗时报错机制,因为ANR&性能考虑,需要处理掌握 异步任务与多线程。 Thread+Runnable+主Looper handler:Thread处理异步耗时,并将结果通过消息发送给主线程Looper轮询 Thread+Runnable+结合View.post|Activity....原创 2019-03-24 09:44:55 · 395 阅读 · 0 评论 -
Android 进阶技术汇总四: 数据序列化:Serializable+Parcelable+ProtocolBuffer+SQLite+JSON+XML
前言:Android 数据序列化概述: 狭义的数据序列化: Serializable:java 序列化标识接口,实例类implementSerializable后,Java便会对这个对象进行序列化操作。 Parcelable:android 序列化标识接口,实例类implementSerializable后,android便会对这个对象进行序列化操作。 广义的数据序列化: S...原创 2019-03-24 11:43:29 · 294 阅读 · 0 评论 -
Android 进阶技术汇总五: 缓存 (对象|网络|文件|IO) 类型汇总
前言:Android 数据缓存概述: 缓存概念:主要包括对象缓存、IO 缓存、网络缓存、图片缓存等 。 性能概念:性能问题,通常是指:响应时间过长、系统吞吐量过低。 TPS(Transaction Per Second):TPS为每秒处理的事务数,是系统吞吐量的指标,在搜索系统中也用QPS(Query Per Second)衡量。TPS一般与响应时间反相关。 1. 对象缓存 gc执...原创 2019-03-24 11:55:07 · 211 阅读 · 0 评论 -
Android 进阶技术汇总六: 性能指标(流畅度|耗电|流量|CPU)
前言:性能指标概述: 总框架图示: 资料来源:https://blog.csdn.net/xiaoru5127/article/details/84862668 流畅性 FPS SurfaceFlinger 合成次数,FPS低可能是当前没有内容更新! 屏幕内若有多块显示区域(Surface),则我们的区域可能受影响, 某些Surface合成不在SF中进行(Camera),则F...原创 2019-03-24 13:02:33 · 1128 阅读 · 0 评论 -
Android 进阶技术汇总七: 数据结构和算法方案 选型汇总
前言:数据结构&算法选型 概述: 这里我们介绍数据结构和算法对性能的影响。 Java语言和Android源码里面有很多现成的轮子,我们在使用这些数据结构的时候,要知其所以然,从源码分析这些数据结构的原理和特点,选取最适合的拿来用。 1.使用SparseArray、ArrayMap代替HashMap SparseArray指的是稀疏数组(Sparse array),所谓稀疏数组就是数...原创 2019-03-24 13:21:33 · 302 阅读 · 0 评论 -
Android 进阶技术汇总十二:文件下载框架比较(Xutils|Retrofit2.0|FileDownloader|DownloadManager)
TODO原创 2019-04-03 23:02:09 · 762 阅读 · 0 评论