android
文章平均质量分 69
xutao20170209
人,总是需要一些理想!无论在何地,做何事,挣多少钱,只要找到并完成了自己的历史使命,就不枉此生!当然,很多时候,足够多的钱,是完成使命的充分非必要条件。
展开
-
cts测试之testCheckForDuplicateOutput
android.security.cts.ClonedSecureRandomTest -- testCheckForDuplicateOutput相关学习SecureRandom.java 产生强随机数的类Pigeonhole Principle 鸽巢原理case目的:测试SecureRandom.java类在相同PID的不同进程中产生的随机数的随机性,就是说在两个原创 2017-02-16 15:21:48 · 449 阅读 · 0 评论 -
Android事件传递
1. 在Activity的启动过程中,窗口和视图创建完后, 会创建输入通道InPutChannel, 该类执行了Parceladble,专门用来传输用户输入事件给window.2. 用InPutChannel和主线程的Looper作为参数创建事件接收器WindowInputEventReceiver. mInputEventReceiver = new WindowInputEven原创 2017-06-01 19:30:42 · 302 阅读 · 0 评论 -
虚拟机之ART
ART概述ART是google开发的运行java程序的运行时环境,他实现了Java虚拟机接口,有垃圾收集机制,还有Java核心类库的调用,可以理解为是Java虚拟机,但并不是标准的Java虚拟机。ART执行的是AOT(提前编译)后的本地机器码,java虚拟机是解释执行class文件,Dalvik虚拟机也是解释执行dex字节码,所以ART比DVM快。ART执行的是oat文件1. oat文原创 2017-05-19 20:30:00 · 543 阅读 · 0 评论 -
activity启动流程简述
Activity是Android四大组件中唯一与用户交互的组件,也是最重要,最复杂的组件, 这里以在新进程中启动Activity为例介绍其启动流程.由于Activity启动过程复杂,代码量大,这里就不贴代码了,直接写调用的函数和作用.发起进程:Activity.startActivity()Instrumentation.execStartActivity()调用标准语句A原创 2017-05-26 20:17:46 · 2992 阅读 · 0 评论 -
Android应用性能优化
App性能优化主要从以下几方面考虑:内存, UI, 电量1. 内存内存是最重要的一个app性能指标.首先简单介绍一下Android系统内存管理机制.内存共享:Android系统起来后首先启动Zygote进程,并在该进程中加载和运行framework的代码和资源,以及一些Java核心类库.app进程是Zygote进程fork出来的,所有app进程与Zygote进程共享运行framework和Jav...原创 2017-06-02 15:59:01 · 361 阅读 · 0 评论 -
Android组件之Service(概述)
Service 是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。service组件作为服务端可以和client端运行在相同进程,也可以运行在不同进程内.service运行在进程的主线程内,在处理业务逻辑时最好使用异步任务或新建线程。如果service和client组件运行在相同进程内:1) client可以通过startService()的方式启动,并在service原创 2017-03-13 19:37:19 · 475 阅读 · 0 评论 -
startService启动过程分析
以在新进程中启动service为例。(在现有进内启动和启动已有service流程相对简单)相关进程:1. client进程2. service进程3. system_service进程,主要是在AMS和ActiveService里面处理4. Zygote进程首先,由client发起frameworks/base/core/java/android/app/C原创 2017-03-13 19:49:19 · 1062 阅读 · 0 评论 -
Android源码网站
网站地址:http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android原创 2017-06-19 19:42:27 · 285 阅读 · 0 评论 -
开发细节,持续更新...
1.在activity的onDestory()方法中清空消息队列2.多使用静态内部类,因为静态内部类不持有外部类的引用,不会造成内存泄漏,非静态内部类自动持有外部对象的引用,容易造成内存泄漏.3.在activity中使用Runable的时候,其实是使用的内部类,长时间执行可能导致activity在销毁后无法被gc回收。4.Fragment的Transaction()方法必须在Activ原创 2017-02-16 16:44:45 · 326 阅读 · 0 评论 -
android程序保活
在Android系统中要想自己的app不被系统杀死,有以下方法:1. 调用Service.startForegroung()方法,将service设置为前台服务。2. 双进程守护3. 在service.onDestory()方法中重新拉起自己4. 在service的onCommand()方法中返回Service.START_STICKY5. 接收广播,重启自己其中只原创 2017-08-22 14:28:43 · 921 阅读 · 0 评论 -
android view绘制流程之Measure
Android View的绘制流程分为Measure,Layout,Draw三步,本文讲第一步Measure,简称测量。测量又可以分为测量流程和测量规则。流 程:废话少数,先上图。此图是手绘的测量流程图第一步:从LinearLayout1的onMeasure()方法开始第二步:LinearLayout1遍历其所有子View,并调用子View的measure()方法对原创 2017-09-29 16:34:46 · 423 阅读 · 0 评论 -
虚拟机之DVM
DVM概述:DVM(Dalvik)也就是Android在5.0之前使用的虚拟机.首先看看他去Java虚拟机JVM之间的关系.Dalvik(DVM)虚拟机不是Java虚拟机(JVM),他是基于寄存器的,而标准Java虚拟机是基于栈,DVM的执行文件是dex,每个dex文件包含多个类,这样可以节约内存空间。JVM的执行文件是class文件,每一个类编译后都是一个class文件。因为JVM基于栈原创 2017-05-19 20:13:14 · 1539 阅读 · 0 评论 -
Android线程通信(Handler)
Android应用程序的线程间通信(消息循环)是通过Handler,Looper和MessageQueue三者协同实现的.Handler发送和处理消息,Looper创建消息队列和进入消息循环,MessageQueue描述消息队列.消息循环涉及到Java层和native层,其中,Looper和MessageQueue在Java层和native层都有相应的类,Handler只在Java层有.J原创 2017-05-25 14:20:01 · 322 阅读 · 0 评论 -
Android SDK之系统权限
android系统的安全设计出发点是任何应用不能对其他应用,系统和用户数据造成威胁或破坏。应用以互不相同的Linux UID运行在独立的进程里面,若应用需要读写其他应用,系统或者用户的数据就需要申请permissions。系统以一定的形式将应用的permissions申请呈现给用户,用户决定是否授权。1)应用签名每个apk都需要用开发者持有私有密钥的证书签名。签名是为了系统能够翻译 2017-02-16 16:24:54 · 1155 阅读 · 0 评论 -
Android SDK之兼容性
1. 设备兼容性:兼容性分为设备兼容性和app兼容性能通过CTS测试的设备都是兼容性社保,这里主要介绍app兼容。如何开发一款兼容市面上所有设备的app?需从如下三方面考虑:1) Device featureAndroid给部分可选feature定义了feature ID。如,FEATURE_SENSOR_COMPASS,FEATURE_APP_WIDGETS.这些翻译 2017-02-16 16:27:40 · 414 阅读 · 0 评论 -
Handler Looper MessageQueue
Looper MessageQueue Handler这三个东西是线程独有,也就是ThreadLocal的。ThreadLocal本身是一个存储类,其存储的信息是线程独占的。MessageQueue是在Looper中实例化的,Handler在实例化的时候会自动绑定对应的MessageQueue。整个消息循环的流程大概如下:1. 首先在创建线程的时候通过Looper.prepar原创 2017-02-16 16:33:58 · 242 阅读 · 0 评论 -
ANR分析
1. ANR的来源系统判定一个APP无响应的几个条件包括:控制Service/Activity/Provider超时、接收广播超时、响应按键/触屏事件超时等。从系统设计角度来分析,以上这些事件都是给APP主线程发消息,可见这些超时实际都是消息没有在APP的主线程及时处理导致的。消息没有处理有三种可能:a. 消息没有发送到主线程的消息队列中b. 主线程还在原创 2017-02-16 16:54:27 · 3213 阅读 · 0 评论 -
IPC in Application Remote Service
转载: http://www.cnblogs.com/zhangxinyan 1. Application 中的 service我们知道Android中Service有三种类型:Local Service,Local Bounded Service,Remote Service。Local Service:基本是提供给自已应用使用,通过startService(intent转载 2017-02-17 11:36:27 · 388 阅读 · 0 评论 -
浅析Binder驱动
Android系统进程间通信采用了Binder机制,基于openBinder开发. 使用Binder进行进程间通信,只需要一次拷贝便可完成,既提升了效率,又节省了内存空间.Binder机制的实现由三部分组成,分为运行在内核空间的驱动层,运行在用户空间的native层和Java接口层.今天主要介绍驱动层的相关知识.1. 设备初始化设备初始化主要是在系统中创建相关文件,包括Binder原创 2017-02-24 13:55:35 · 340 阅读 · 0 评论 -
Android Service Manager
1.介绍Service Manager是Binder进程间通信的核心组件,它是Binder进程间通信的上下午管理者(Context Manager),同时负责系统中的Service组件,并且向Client提供获取Service代理对象的服务.Service Manager运行在独立的进程中,所以Client组件和service组件都需要通过进程间通信机制来与他交互.从这个角度看Service原创 2017-02-22 21:33:12 · 1060 阅读 · 0 评论 -
binder学习笔记
binder是android系统服务与应用进程之间的桥梁,可以说是整个android系统的基石.binder机制主要分为Java层,native层和驱动层.其中Java层和native层运行在用户空间,驱动层运行在内核空间.Java层主要是应用进程的接口, 通过jni调用到native层,主要实现在native层和驱动层.binder驱动通过内存映射达到一次拷贝就实现进程间通信的目的.从设计模原创 2017-05-23 17:26:21 · 1045 阅读 · 0 评论 -
android系统服务
android中的系统服务,如AMS,PMS和WMS与四大应用组件之一的service完全是两回事.系统中的这些服务一直运行在系统进程中,永远不会被杀死,他们不是继承于service,而是继承Stub类或者Binder类,Stub最终也继承于binder.这些服务在系统启动的时候调用servicemanager的addservice方法进行注册.public class PackageMana原创 2017-05-24 11:47:54 · 613 阅读 · 0 评论 -
bindService过程
相关进程1. client进程2. system_server进程,主要是在AMS和ActiveService里面处理3. service进程首先由client进程发起frameworks/base/core/java/android/app/ContextImpl.javaframeworks/base/core/java/android/content/ContextW原创 2017-05-24 15:49:59 · 637 阅读 · 0 评论 -
彻底干掉状态兰和导航栏
看门见山$ adb remount $ adb shell mv /system/app/SystemUI.odex /system/app/SystemUI.odexold $ adb shell mv /system/app/SystemUI.apk /system/app/SystemUI.apkold $ adb reboot 这样可以永久性的干掉状态栏和导航栏,原理原创 2017-12-18 12:10:31 · 742 阅读 · 0 评论