- 博客(24)
- 资源 (8)
- 收藏
- 关注
原创 Android插件化之Activity生命周期处理
Android插件化之Activity生命周期处理一.概述Android里的类比如Activity,service,application等相对于普通的Java类的最大的区别是它们时“活”的,它们具有生命周期。就拿Activity来说吧,它的生命周期是受到系统的严格控制的,具体来说就是通过SystemServer进程里的AMS通过IBinder控制应用进程来进行Activity的生命周期的
2016-08-18 18:07:23
1034
原创 Android APK安装过程
Android APK安装过程一.大致过程apk安装过程大致要做三件事1.把apk复制到data/app目录下,并命名为xxx.apk(有时会在后面添加-1或-2)其中xxx是应用的包名。 在高版本的Android中,还会生成对应的.odex文件。 我们知道,apk其实就是一个压缩包,里面包含有classes.dex,androiManifest.xml,res资源文件
2016-08-18 08:49:46
601
原创 Android插件化之资源动态加载
Android插件化之资源动态加载一.概述Android插件化的一个重要问题就是插件资源访问问题,先列出会面对的问题1.如何加载插件资源2.如何处理插件资源与宿主资源的处突:插件化资源问题要做到的效果是,如果我们要获取的资源在插件中找得到,则加载优先加载插件的,如果找不到,则到宿主资源中找。这样能做到动态更新的效果。3.如何确保插件和宿主使用到的是被修改过的资源。
2016-08-17 16:26:36
4473
1
原创 APK启动过程概述
APK启动过程概述一.apk其实是一个Java程序,所有必须从main函数开始执行。而apk应用的main函数所在的类就是ActivityThread,其main函数就是程序的启动点。apk启动后会马上开启一个消息循环,即通过调用Looper的prepareMainLooper(),创建消息队列。然后创建ActivityThread对象,在这里会创建一个Handler对象(H)用于从消
2016-08-10 15:47:56
3433
原创 Android使用ClassLoader加载类
Android使用ClassLoader加载类一.ClassLoader继承关系 BootClassLoader处于双亲委派机制类加载链的顶端,负责虚拟机内部的类的加载。一般应用里(除了我们自定义的类加载器并且不遵守双亲委派机制)的类加载器有两个,一个是系统类加载器,负责加载系统内部的类,如android开头的。另一个类加载器负责加载应用程序的类,一般由我们自己写的。也就是说加载同
2016-08-10 15:37:52
1285
原创 Binder机制简单分析
Binder机制简单分析一.操作系统层面分析在操作系统中,进程与进程之间是相互独立的,他们拥有独立的虚拟内存,独立的资源,每个进程拥有独立的代码段CS,堆栈段SS,数据段DS等,进程间的运行互不影响,统一由系统调度。应用进程运行在用户空间,用户空间的程序的权限是很低的,而内核空间则拥有整个计算机的控制权限,包括操作系统内部权限,对硬件,网络的访问控制权限。而用户空间想访问受限的资源必须通过
2016-08-04 09:09:36
308
原创 Android插件研究系列之DL简析
Android插件研究系列之DL一.概述插件化,简单来说就是在不更新apk的情况下,只从服务器下载插件(一般是打包或处理过的apk),然后增加宿主apk的功能或更新宿主apk的一些功能,资源。DL插件框架的作用是增加宿主apk的功能,如增加新的Activity,service。其核心思想就是代理。该方法不需要安装插件apk。二.宿主apk宿主apk要解决的问题主要有三个
2016-08-01 20:31:16
662
原创 Android系统的启动流程
Android系统的启动过程因为Android是基于Linux的,所有,Android系统的启动过程要先启动Linux,再启动Android 的Framework。一.Android Linux的启动过程:1.Linux的启动总的来说包括3个过程,即执行BootLoader,操作系统内核初始化,执行第一个程序(Home程序) 2.具体流程如下2.1首先是开机,系统上电后执行
2016-07-29 16:18:51
438
原创 Java垃圾回收机制解析
Java垃圾回收机制一.垃圾回收区: Java运行时内存区有Java堆,方法区,程序计数器,虚拟机栈,本地方法栈这五个地方,其中程序计数器,虚拟机栈和本地方法栈这三个地方随线程而生,随线程而灭,所以不需要考虑垃圾回收,而Java堆和方法区会伴随着整个JVM的生命周期,所以有必要及时清理掉没有的垃圾。 二.垃圾回收算法:(针对Java堆) 1.Java的垃
2016-07-25 12:30:47
290
原创 java内存区分配及主要作用
Java内存区一.概图: 二.Java堆: 1.Java对为线程共有。 2.Java堆是线程共享的内存区域,几乎所有的对象实例和数组都要在堆上分配。说几乎是因为随着JIT编译器的发展和 逃逸分析技术的成熟,有一些对象实例在考虑到速度优化上,会采用栈上分配等。还有,不管是类属性的对象还是局部 对象,都是分配在Java堆的。
2016-07-22 12:59:13
601
原创 Java内存模型
Java内存模型 一.内存模型图 二.概述 1.Java每个线程都保存对共享内存的一个拷贝,即工作内存。线程对共享数据的操作都必须在自己的工作内存中进行, 而不能直接操作共享内存中的数据。 2.Java采用共享内存模型来实现数据的同步三.内存模型的特性 1.原子性:即一个操作不能被打断,必须一次执行完
2016-07-21 08:38:22
309
原创 Java方法(虚拟机角度)原理分析
Java方法一.概述: 1.方法里面的代码是储存在内存中的,按微机知识就是储存在代码段(DS)里。 2.方法是属于对象的,对象是类的实例。所以当一个类被加载时,它的类信息会被储存在方法区里,这里的类信息包括 在类里定义的方法的符号引用,符号引用不是真正方法在内存区的调用入口,要从符号引用得到方法的直接引用才能调 用到方法。而在编译
2016-07-20 15:17:14
536
原创 Java IO分析(包括旧IO和NIO)
IO1.最后操作都会交到Io(Posix)然后通过本地方法来操作读写,会根据FileDescriptor。写2.的基类为OutputStream,读的基类为InputStream3.以Stream结尾的类主要操作byte。以Writer结尾的类主要操作char,char要经过CharsetEncoder编码,然后再转为byte,再交由Stream来传输一.OutputStream:
2016-07-20 15:11:38
1275
原创 Java并发编程Concurrent分析(上)
Concurrent一.Atomic处于Java.util.concurrent.atomic包中,对基本数据类型都有实现,如AtomicInteger,AtomicBoolean等。可以实习对基本数据类型的自增,自减等的原子性操作,不需要额外加锁,而对于平时基本数据类型的如i++,i--等因为不是原子操作,所以的并发情况下不安全。atomic数据即保证了数据的线程安全,又避免了加锁所消耗
2016-07-20 15:01:20
978
原创 Java类加载分析
Java类加载一.类加载生命周期:类加载生命周期包括加载,验证,准备,解析,初始化,使用,卸载。 二.加载:*过程1.获取定义此类的二进制字节流(使用类加载器)2.把类信息存与方法区3.在内存中(可以是Java堆或方法区)生成一个该类的java.lang.Class对象,作为方法区中该类信息的访问入口*要点1.非数组类由类加载器加载2.数
2016-07-20 14:54:05
337
原创 Service分析(上)
Service 一.继承关系:二.启动方式1.service的启动方式1:客户端通过调用Context.startService(Intent i)启动service,对应的停止方式为Context.stopService(Intent i);这种方式启动的service不用与之通信,service一般用于后台计算服务等。2.service的启动方式2:a.
2016-07-20 14:37:30
391
原创 图片下载框架Picasso实现原理解析(上)
Picasso框架解析一.Picasso功能: 图片加载二.Picasso使用:最简单的是Picasso.with(Context).load(Url).into(ImageView),Context是环境(不管是什么Context,在Picasso里都会转 化为application的context),URL则为要下载的图片地址,ImageView是要显示图片的view。
2016-07-20 14:20:20
2698
原创 从源码角度解析Handler
Handler一.概述1.每个Handler都和一个创建它的线程及该线程的MessageQueue关联。2.handler可以用来发送message和Runnable对象到创建handler的线程的MessageQueue里。3.handler发送消息的方法有 post, postAtTime(Runnable, long), postDelayed, sendEmptyMessa
2016-07-20 12:47:39
1233
原创 Android进程与线程
进程与线程一.概述当android的一个app的某个组件启动时,而这时候该app的其他组件还没启动,也就是从android系统开机后app第一次启动时。android系统会为该app分配一个Linux进程(process),以及一个主线程(main thread)。如何在改进程的主线程里运行该app及其组件。默认情况下app的组件都是运行在主进程里的。当然,我们可以为app的组件开辟一
2016-07-20 12:45:04
382
原创 android自定义View原理分析
自定义view一.View的MeasureSpec1.MeasureSpec包SpecMode和SpecSize。其中SpecMode包括UNSPECIFIED:父容器不对该view做限制,要多大给多大,一般用于系统内部EXACTLY:父容器已经得到该view的确切大小,对应于match_parent和给出确定大小值。AT_MOST:父容器给出该view可能的最大尺寸,对应于w
2016-07-20 12:29:55
1472
原创 android事件分发机制解析(配流程图)
事件分发机制一.点击事件传播路径1.点击事件TouchEvent最先是到达Activity的,然后传给Activity对应的window,再传给DecorView,再传给id为content的ViewGroup,即我们通过setContentView设置的ViewGroup,以此到最后的view。我们编程所能控制的由Activity,ViewGroup和View。2.要把点击事
2016-07-20 11:29:29
1421
原创 Activity分析(上)
一.Activity继承关系 二.activity有四个基本状态: 1.activeor running:当activity处在屏幕最上方(栈顶)时。 2.paused:当一个activity失去焦点,但仍然可见时,这种情况如有一个非全屏的透明的activity在这个activity之上,这 时候这个activity就处于paused状
2016-07-20 11:13:13
455
原创 Android内存篇
Android内存篇一.内存分析工具MAT的使用 1.在DDMS里选中所要分析的进程。 2.先点几下Case GC进行一下内存回收,这样可以使内存中有泄漏的可以凸显出来 3.点击dump HPRROF File按钮,把该进程的内存分析文件储存起来 4.在DOS里进入sdk的platform-tools使
2016-07-20 10:53:30
440
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人