[置顶] 滴滴插件化框架VirtualAPK原理解析(一)之插件Activity管理

上周末,滴滴与360都开源了各自的插件化框架,Virtualapk与RePlugin,作为一个插件化方面的狂热研究者,在周末就迫不及待的下载了Virtualapk框架来进行研究,本篇博客带来的是Virtualapk原理解析的第一篇Activity管理,博客只是自己的理解,小弟才疏学浅,可能有很多理解不对的地方,欢迎各位大神指出。(看博客之前,请大家先下载Virtualapk的项目,https://g...
阅读(3665) 评论(3)

Android 贝塞尔曲线解析

相信很多同学都知道“贝塞尔曲线”这个词,我们在很多地方都能经常看到。利用“贝塞尔曲线”可以做出很多好看的UI效果,本篇博客就让我们一起学习“贝塞尔曲线”。贝塞尔曲线的原理贝塞尔曲线是用一系列点来控制曲线状态的,这些点简单分为两类: 类型 作用 数据点 确定曲线的起始和结束位置 控制点 确定曲线的弯曲程度 一阶贝塞尔曲线 一阶曲线是没有控制点的,仅有两个数据点(A 和 B),最...
阅读(2566) 评论(6)

《Effective Java》读书笔记(一)之创建和销毁对象

最近在研读《Effective Java》一书,读书不做点笔记,感觉很容易就忘掉,于是用本篇博客来记录阅读此书的笔记。 郑重声明: 由于是《Effective Java》一书的笔记,所以大部分内容基本来自此书,还有一小部分是自己的理解。第1条 考虑用静态工厂方法代替构造器一般来说,获取一个类的实例,大家想到的都是通过该类的公有构造函数来new 一个实例,而第一条推荐我们可以考虑使用静态工厂方法来创...
阅读(146) 评论(0)

Android性能优化系列之电量优化

电量消耗的计算与统计是一件麻烦而且矛盾的事情,记录电量消耗本身也是一个费电量的事情,随着Android开的性能要求越来越高,电量的优化,也显得格外重要,一个耗电的应用,用户肯定会毫不犹豫的进行卸载,所以本篇博客,我们一起来学习Android性能优化之电量优化。耗电是如何产生的?耗电情况,例如:打开屏幕,所有要使用CPU/GPU工作的动作都会唤醒屏幕,都会消耗电量。这和应用程序唤醒设备还不一样。 (...
阅读(1868) 评论(5)

深入解析Glide源码

Glide 是 Google的开源项目, Glide具有获取、解码和展示视频剧照、图片、动画等功能,它还有灵活的API,这些API使开发者能够将Glide应用在几乎任何网络协议栈里。创建Glide的主要目的有两个,一个是实现平滑的图片列表滚动效果,另一个是支持远程图片的获取、大小调整和展示。本篇博客,我们一起深入分析Glide的源码。总体设计with方法首先我们来看一下glide的一般使用方法Gli...
阅读(2139) 评论(0)

《深入理解java虚拟机》学习笔记之编译优化技术

郑重声明:本片博客是学习一书所记录的笔记,内容基本为书中知识. Java程序员有一个共识,以编译方式执行本地代码比解释方式更快,之所以有这样的共识,除去虚拟机解释执行字节码时额外消耗时间的原因外,还有一个很重要的原因就是虚拟机设计团队几乎把对代码的所有优化措施都集中在了即时编译器之中(在JDK 1.3之 后,Javac就去除了-O选项,不会生成任何字节码级别的优化代码了...
阅读(2459) 评论(0)

《深入理解java虚拟机》学习笔记之虚拟机即时编译详解

Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”,为了提高热点代码的执行效率,在运行时, 虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器,即时编译器编译性能的好坏、 代码优化程度的高低却是衡量一款商用虚拟机优秀与否的最关键的指标之一,本篇博...
阅读(5036) 评论(7)

Android Gradle知识梳理

Android Studio已经成为现在Android 开发的主要工具,在开发过程中学习使用gradle显得格外重要,本篇博客,我们一起学习gradle打包的一些知识。Gradle 安装1.安装JDK,并配置JAVA_HOME环境变量。因为Gradle是用Groovy编写的,而Groovy基于JAVA。另外,Java版本要不小于1.5. 2.下载。地址是:http://www.gradle.org...
阅读(20234) 评论(1)

Android Bitmap 知识点梳理

在日常开发中,可以说和Bitmap每天都会见面,基本上每个应用都会直接或间接的用到,而这里面又涉及到大量的相关知识。 所以这里把Bitmap的常用知识做个梳理,限于经验和能力,不做太深入的分析。区别decodeResource()和decodeFile()这里的区别不是指方法名和参数的区别,而是对于解码后图片尺寸在处理上的区别:decodeFile()用于读取SD卡上的图,得到的是图片的原始尺寸...
阅读(1530) 评论(3)

Android Studio常用技巧汇总

工欲善其事必先利其器,学习开发工具的各种技巧,有利于提高我们的工作效率,本篇博客,我们就来学习Android Studio的各种技巧。Android Studio初步使用Project面板 在Android Studio最左边可以找到Project标签,这里是开发者管理项目的地方Project标签下有几个选项卡,点击右边的箭头,可以打开切换菜单 Project标签展示的是整个项目的目录结构,完全...
阅读(2727) 评论(7)

Android Framework学习(十三)之启动ServiceManager

ServiceManager是Binder IPC通信过程中的守护进程,本身也是一个Binder服务,但并没有采用libbinder中的多线程模型来与Binder驱动通信,而是自行编写了binder.c直接和Binder驱动来通信,并且只有一个循环binder_loop来进行读取和处理事务,这样的好处是简单而高效。ServiceManager本身工作相对简单,其功能:查询和注册服务。 对于Binde...
阅读(318) 评论(0)

Android Framework学习(十二)之获取ServiceManager

概述获取Service Manager是通过defaultServiceManager()方法来完成,当进程注册服务(addService)或 获取服务(getService)的过程之前,都需要先调用defaultServiceManager()方法来获取gDefaultServiceManager对象。对于gDefaultServiceManager对象,如果存在则直接返回;如果不存在则创建该对象...
阅读(421) 评论(0)

Android Framework学习(十一)之从ServiceManager获取Native层服务

上一篇博客,我们学习了服务是如何向ServiceManager中进行注册的,本篇博客,我们将学习如何从ServiceManager中获取服务,和上一篇一样,同样以MediaPlayerService为例子。 蓝色: 代表获取MediaPlayerService服务相关的类; 绿色: 代表Binder架构中与Binder驱动通信过程中的最为核心的两个类; 紫色: 代表注册服务和获取服务的公共接口...
阅读(411) 评论(0)

深入解析Android中View的工作原理

Android中的任何一个布局、任何一个控件其实都是直接或间接继承自View实现的,当然也包括我们在平时开发中所写的各种炫酷的自定义控件了,所以学习View的工作原理对于我们来说显得格外重要,本篇博客,我们将一起深入学习Android中View的工作原理。ViewRoot和DecorView1.ViewRoot对应于ViewRootImpl类,是连接WindowManager和DecorView的纽...
阅读(1752) 评论(1)

Android Framework学习(十)之向ServiceManager注册Native层服务

本篇博客以MediaServer为切入点,对向ServiceManager注册Native层服务进行分析。media入口函数是main_mediaserver.cpp中的main()方法int main(int argc __unused, char** argv) { ... InitializeIcuOrDie(); //获得ProcessState实例对象 sp...
阅读(313) 评论(0)
81条 共6页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:234717次
    • 积分:3193
    • 等级:
    • 排名:第10348名
    • 原创:81篇
    • 转载:0篇
    • 译文:0篇
    • 评论:163条
    最新评论