Android 总结
文章平均质量分 79
疾风细语
Soon or later
展开
-
Android 源码分析VR返回键无法用Accessibility拦截的问题
上一篇《Android 源码分析AccessibilityService拦截VR眼镜Key事件以及key事件在View体系的传递》我们分析到了系统对虚拟按键的BACK键和VR眼镜的BACK键处理是不同的。AccessibilityService很容易就拦截到了虚拟按键的BACK键(以下简称BACK),但始终拦截不到VR眼镜的BACK键(以下简称VBACK)。经过从源头InputReader.cpp原创 2017-02-28 16:11:11 · 1817 阅读 · 4 评论 -
Android Fresco主要模块和特性
这是fresco官网的介绍,转自https://www.fresco-cn.org/Image PipelineFresco 中设计有一个叫做 Image Pipeline 的模块。它负责从网络,从本地文件系统,本地资源加载图片。为了最大限度节省空间和CPU时间,它含有3级缓存设计(2级内存,1级磁盘)。DraweesFresco 中设计有一个叫做 Draw转载 2017-05-03 23:59:32 · 515 阅读 · 0 评论 -
Android进程总结
一、概括系统启动架构图:上图在Android系统-开篇中有讲解,是从Android系统启动的角度来分析,本文是从进程/线程的视角来分析该问题。1.1 父进程在所有进程中,以父进程的姿态存在的进程(即图中的浅红色项),如下:kthreadd进程: 是所有内核进程的父进程init进程 : 是所有用户进程的父进程(或者父父进程)zygote进程 : 是所有上层Java进程转载 2017-05-24 13:40:54 · 549 阅读 · 0 评论 -
Android handler的内存泄漏问题
在Activity或者Fragment中创建异步处理对象时,比如Handler、AsyncTask,要特别注意内存泄漏问题,这些异步对象在子线程处理请求,生命周期和外面Activity和Fragment存在不同步的问题,当Activity的生命周期结束时,若不显式在onDestroy中将这些异步控件结束,将会造成activity无法被回收,也就造成了内存泄漏。下面我们从smali文件和内存堆栈原创 2017-05-05 13:43:34 · 525 阅读 · 0 评论 -
Android PhoneWindowManager WindowManagerGlobal WindowManagerImpl的作用和关系
WindowManagerService作为Window和输入事件的管理中心,这个是很容易理解的,而IWindowManager 的proxy端就不那么好理解的了,和WindowManager有关的就有PhoneWindowManager、WindowManagerGlobal和WindowManagerImpl三个,下面我们来简单分析一下三者的作用和关系。1.PhoneWindowM原创 2017-05-16 22:38:55 · 4487 阅读 · 0 评论 -
Android高性能编码实战:网络框架优化
之前的文章从理论上介绍了Android高性能编码的几个优化的方向,下面我们从实战的角度讲述如何优化Android高性能编码实战:App启动优化Android高性能编码实战:网络框架优化之前的App启动优化最后提到了网络框架的优化问题,本篇将针对这个问题对APP进一步优化04-26 18:14:59.504 11295-11295/com.js.test E/xuti原创 2017-04-26 18:54:43 · 1375 阅读 · 1 评论 -
Android高性能编码实战:App启动优化
App冷启动是很慢的,期间有大量的对象被创建,进程创建,分配内存,绘制界面,建立消息队列,各种第三方控件初始化等等,用户安装完APP,第一次启动,往往第一印象特别重要,启动迅速,显示流畅,就有很好的用户体验。04-25 14:15:10.803 7202-7202/com.js.test E/Test: app start at 149310091080204-25 14:15:12.200原创 2017-04-25 15:36:56 · 952 阅读 · 0 评论 -
Android 高性能编码二:利用缓存提高TPS
缓存主要包括对象缓存、IO 缓存、网络缓存、图片缓存等 。1.对象缓存gc执行的时候,系统是阻塞的,gc数据较大的时候,系统会很明显的卡顿。a.listview对象缓存listview快速滚动时,重复利用item,不必重新创建新的对象,也避免了对象的频繁销毁,减少了gc的数据的大小和时间。b.调用频繁的对象设为全局变量,或保存到容器中。c.在方法体中,如果频繁使用某一全原创 2017-04-24 00:28:44 · 1015 阅读 · 0 评论 -
Android架构师之路
很多Android的小伙伴在做了多年的开发之后,始终搞不清楚达到Android架构师需要何种技能,我们对比着Android高级工程师来说明。我们先来看一下Android高级工程师的招聘要求职位描述:Responsibility1. Android平台功能模块的设计与开发2. 移动端开发框架的研究与设计3. 移动端技术规范的制定与推广4. 移动端技术培训Require原创 2017-07-01 00:55:40 · 4031 阅读 · 0 评论 -
Android targetSdkVersion,minSdkVersion和compileSdkVersion的一些理解
Android系统众多的sdkVersion让人很头疼,在掉了一次一次坑之后,总结一下我对他们的理解。1.minSdkVersionminSdkVersion最简单,也就是需要的最低待遇,少了不干。某些APP要求最低是19(Android 4.4),所要求的API不能低于这个,要不安装不了。低于19的做过兼容,安装了会崩溃,或者主要功能不能用。2.compi原创 2017-02-14 00:23:08 · 4763 阅读 · 3 评论 -
Android studio使用gradle将assets目录so库打进jar包以及jar包拆分
Android studio gradle脚本不但可以编译出apk,还可以导出jar包,同时可以将assets目录、so目录打进jar包,还可以将jar包中不需要的class去除,下面我们介绍一下如何写gradle脚本。选择build/assembleDebug或者assembleRelease就可以在不用编译成apk的情况下快速将Java类编译成jar包。def SDK_BASE原创 2017-03-16 23:49:33 · 2436 阅读 · 0 评论 -
Android pid uid 机制分析Permission Denial的错误
PID 指进程ID. PID是进程的身份标识,程序一旦运行,就会给应用分配一个独一无二的PID(ps:一个应用可能包含多个进程,每个进程有唯一的一个PID)进程终止后PID会被系统收回,再次打开应用,会重新分配一个PID(新进程的PID一般比之前的号要大)UID 指用户ID.UID在Linux中就是用户的ID,表明时哪个用户运行了这个程序,主要用于权限的原创 2017-03-26 10:50:13 · 7480 阅读 · 0 评论 -
Android 使用RxJava+Retrofit 2.0合并网络请求
在开发验证码的功能时,要求验证code的同时判断这个是不是服务码(万能码),这个就需要同时去请求两个接口,只要有一个功能就算成功。 @Override public void checkConfirmCode(String deviceId, String code, OnAPIListener listener) { Map map = new Has原创 2017-03-28 16:07:54 · 6360 阅读 · 0 评论 -
Android 源码分析AccessibilityService拦截VR眼镜Key事件以及key事件在View体系的传递
上一篇《Android AccessibilityService拦截不到VR眼镜BACK键分析》我们拦截VR返回键出现了问题,这一篇我们从源码中进行分析。《Android 源码分析鼠标事件传递》介绍了鼠标事件从底层到View的传递过程,那么我们直接从View的源码中分析原创 2017-02-27 16:25:38 · 1104 阅读 · 2 评论 -
Android 6.0 修改系统权限分析(二)
Android 6.0中,除了危险权限不再在安装后授予,还有两个特殊权限:SYSTEM_ALERT_WINDOW(设置悬浮窗,进行一些黑科技)和WRITE_SETTINGS(修改系统设置)。这里我们来分析WRITE_SETTINGS权限。WRITE_SETTINGS权限官方API说明Note:If the app targets API level 23 or higher原创 2017-02-11 16:32:06 · 2723 阅读 · 0 评论 -
Android 6.0修改系统权限分析(一)
Android 6.0之后敏感权限默认是关闭的,必须显式的去请求这个权限。而在6.0之前,只要你在manifest里面声明过所需要的权限,安装之后默认是开启的,下面我们来分析一下遇到的问题。android:name="android.permission.WRITE_SETTINGS" />项目中需要写系统设置的权限,该权限可以设置音量,调节明暗,测试手机系统是Androi原创 2017-02-09 11:17:42 · 6452 阅读 · 1 评论 -
Android AccessibilityService拦截事件及VR眼镜返回按键捕捉
公司项目有个需求,就是拦截VR眼镜上的返回按键,既然要拦截按键,私以为有以下两种方式:1. AccessibilityService,Android辅助工具可以实现拦截按键、焦点变化、触摸时间、姿势等。2. 使用adb shell命令,getevent方式分析获取到的按键的值。第一种方法最简单,代码如下:AccessibilityService.javapublic c原创 2017-02-26 15:25:26 · 4935 阅读 · 0 评论 -
Android aidl问题汇总
本篇记录Android aidl设计过程中所犯的错误,不断更新。1.aidl编译不通过aidl引用的类必须是parceable或者属于系统(jar包)。自定义的类必须是parcebale,也就是必须也有自己的aidl文件。// IControllerListener.aidlpackage com.jason.gvrcontroller.sdk.common;import原创 2017-02-20 18:11:03 · 2627 阅读 · 0 评论 -
Android getevent拦截输入事件
上篇文章《Android AccessibilityService拦截事件及VR眼镜返回按键捕捉》我们介绍了如何用AccessibilityService来拦截事件。本篇我们来介绍另一种拦截按键的方式,就是在shell的状态下,使用getevent命令对输入事件进行分析。必须要说明的是getevent命令使用场景有:1.在PC端shell环境下,不必root2.在APP端使用必须要原创 2017-03-06 16:02:41 · 2162 阅读 · 3 评论 -
从android aidl理解Proxy/stub模式
如果activity要想和一个跨进程的Service进行通信就需要通过Binder框架,获取到IBinder对象,并调用transact()方法来达到通信的目的。该方法里的第一个参数是整数型的code,表示的是请求的服务类型,比如说我想请求使用某播放器服务,我就需要制定一个规则:当code为1时表示开始播放,当code为2时表示停止播放,当code为3时表示下一首歌曲。。。这中方法有几个问题:转载 2017-03-20 11:30:52 · 1433 阅读 · 0 评论 -
Android的swift语言Kotlin中文开发文档
转自GitHub https://github.com/huanglizhuo/kotlin-in-chinese?utm_source=tuicool&utm_medium=referral2016.3.4 gitbook 墙内访问速度很糟糕 现在有了 墙内地址 啦 :) 国内服务器由 掘金 赞助 稀土掘金:挖掘最优质的互联网技术 / 联合编辑每日精选内容 / 移转载 2017-03-20 23:20:09 · 395 阅读 · 0 评论 -
Android JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 224)
项目开发中遇到了报错JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 224)E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 224)I/Unity: AndroidJavaException: java.lang.RuntimeExce原创 2017-03-22 16:43:24 · 12636 阅读 · 1 评论 -
Android如何监听第三方应用的启动
个人总结的监听第三方应用启动的方法有以下几种:1.Root状态下监听ActivityManager的log2.参考程序锁的实现,监听后台运行的进程3.深入framework,通过反射等方式注入hook第一种方式监听应用的启动,restart都能监控到,不过这种方式限制很大,在最新的android版本中,再加上各手机厂商对于安全性的努力,使得Root变的很困难。第二种方式采用原创 2017-03-23 00:26:15 · 21230 阅读 · 1 评论 -
Android Retrofit 2.0 注解的理解
Retrofit 2.0包含众多的注解,包括方法注解,包含@GET、@POST、@PUT、@DELETE、@PATH、@HEAD、@OPTIONS、@HTTP。标记注解,包含@FormUrlEncoded、@Multipart、@Streaming。参数注解,包含@Query,@QueryMap、@Body、@Field,@FieldMap、@Part,@PartMap。其他注解,原创 2017-03-30 23:22:06 · 4813 阅读 · 2 评论 -
Android mipmap和drawable的区别
mipmap文件夹下面应该放哪些图片Android studio 1.4时出现了mipmap这类文件夹,所有的ic_launcher.icon都放在了mipmap文件夹下面,按照原先的开发习惯,我们将所有的资源图片放在了drawable文件件下面,也就是ic_launcher.icon所在的目录。现在drawable文件夹不是自动生成了,很多人习惯性地,将所有资源图片放在了mipmap,认原创 2017-03-13 12:56:29 · 3568 阅读 · 1 评论