- 博客(49)
- 资源 (15)
- 问答 (2)
- 收藏
- 关注
转载 Android 1.5到10.0 都有哪些新特性?
转载作者:嘟嘟呢https://blog.youkuaiyun.com/u012758803/article/details/54844903Android 1.5(Cupcake纸杯蛋糕):智能虚拟键盘;使用widgets实现桌面个性化;在线文件夹(Live Folder)快速浏览在线数据;视频录制和分享;图片上传;更快的标准兼容浏览器;Voice search 语音搜索;立体声蓝牙和免提电话A...
2019-02-15 15:32:19
393
原创 Android性能相关--性能指标篇
数据概述数据获取CPU数据/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为内核与进程提供通信的接口。用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。/proc/< pid >/task/< tid > : &
2018-12-13 15:02:02
4189
原创 Android UI绘制 - 动画进阶
Canvas、LayerPS:addArc(Rect,startAngle,sweepAngle)中startAngle:确定角度的起始位置sweepAngle : 确定扫过的角度,扫过的角度360为顺时针一圈,-360为逆时针一圈,但如果扫过的角度超过360则起点会变成0度而非startAngle百分比圆的时候特别注意,这时候一般设置为359PS:saveLayer可以为canvas创...
2018-11-22 10:48:17
797
原创 Android UI绘制 - 动画基础
帧动画<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/andro
2018-11-07 15:59:34
224
原创 Android UI绘制 -- Drawable
Drawable 功能获取和设定可绘制区域public final Rect getBounds() public void setBounds(int left, int top, int right, int bottom) public void setBounds(Rect bounds) //显示级别,从0到10000public final boolean setLevel...
2018-11-05 16:19:03
915
原创 Android UI绘制 -- 屏幕适配
#重要概念屏幕尺寸手机对角线的物理尺寸,单位英寸。常见的有:5寸、5.5寸、6寸等屏幕分辨率手机在横向、纵向上的像素点数总和,单位px。常见的有:1080x1980、720x1280/480x800等屏幕像素密度每英寸的像素点数,单位dpi。密度类型代表分辨率(px)屏幕像素密度(dpi)低密度(ldpi)240x320120中密度(mdpi)3...
2018-11-02 11:59:31
531
原创 Android多渠道打包
方案介绍优缺点友盟多渠道打包方案利用meta-data记录每个渠道,每个渠道都需要走一次打包流程缺:打包速度慢美团多渠道打包方案1向apk的META-INF目录写入空文件,文件名即为渠道名优:快速缺:Android7.0之后打包会记录文件结构,新增空文件导致签名不一致,无法使用美团多渠道打包方案2 – Walle通过在Apk中的APK Signature...
2018-09-26 16:23:32
176
原创 Android 资源、代码打包 && 签名过程&&资源查找过程
1. 创建Android应用程序(利用SDK提供的android.bat批处理工具) android create project Options: -n –name 应用程序的名字 -t –target SDK Target ID -p –path 应用程序的工作目录 -k –package 应用程序的包名 -a –activit
2018-09-20 15:07:36
435
原创 Android AOP 三剑客:APT AspectJ Javassist
概述AOP三剑客各自作用的位置 APT 注解处理器(Java5 中的Annotation Processing Tool),注解现在已经比较常见,使用广泛,可以为我们提供准确的切入点。教程参见代表框架:DataBinding、Dagger2、EventBus3、DBFlow、AndroidAnnotation等AspectJ主要任务是在编译期注入代码代表框架:Hugo(Jak...
2018-09-11 15:00:39
1052
原创 Android Framework -- WindowManagerService
WindowManagerServiceWindowManagerSerivce有三个主要功能: 窗口管理系统:负责窗口的启动、添加、删除、大小、层级顺序等,它会为每个窗口分配一块Surface以供绘制。核心成员有DisplayContent、WindowToken、WindowState 窗口动画系统:窗口切换时的动画。核心成员:WindowAnimator、Choreographer ...
2018-08-31 16:06:24
1270
原创 Android Framework -- ActivityManagerService
概述AMS管理者四大组件 Activity Service BrocastCast ContentProvider,AMS与四大组件之间通过Binder通信,AMS作为服务端。Activity启动流程简化口述版Launcher进程中:【图标】被点击,Launcher进程向AMS发起【启动某个Activity】(附带信息)的Binder请求AMS进程中:【保存Activity信息...
2018-08-28 15:15:53
426
原创 Java语法-反射、注解(及APT)、泛型、动态代理
反射获取Class//法一,对象.getClass,不适用于int等基础类型Class clazz = new Person().getClass//法二,.ClassClass clazz = Person.Class//法三,包名try { Class clazz = Class.forName("com.android.test.Person");} catc...
2018-07-24 18:08:19
1943
1
原创 Java基本类型和数据结构
基本类型精度丢失和溢出: 精度丢失一般发生在浮点型存储数值或类型强制转换的时候。我们知道计算机存储数值实际存储的是二进制,举个粟子double r1 = 1 - 0.99;double r2 = 2 - 0.99 result的值是0.010000000000000009,r2的值为1.01,因为0.99转换成二进制的时候就已经精度丢失了。小数二进制和十进制的转换方法,类似...
2018-07-20 13:52:09
9067
1
原创 Java虚拟机--Java内存模型与线程
并发编程模型线程之间的通信机制有两种:共享内存和消息传递消息传递的并发模型(同步隐式进行) eg:主内存中有变量x=0;线程A和线程B都会对它进行自增操作。线程A先对x做自增操作,此时线程A会将主内存中的x=0复制一份到本地内存并进行自增x=1。当线程A与线程B通信的时候,线程A会首先把本地内存中的x刷新到主内存中,完成隐式同步。共享内存的并发模型(同步显式进行,程序员需显式指定代码
2018-07-19 09:58:51
206
原创 代码规范与质量
保证项目代码的和谐一致 CheckStyle 和 Alibaba Java Coding Guidelines一般代码编写规范包含代码结构,格式,命名、javadoc还有编码的最佳实践等内容CheckStyle是一个帮助程序员来遵守一直的编码规范的工具。默认,它支持google 和sun 的java style guide。而且它是高度可配置的,允许自定义编码规范,并可以对各种IDE(ec...
2018-07-10 11:34:45
2788
原创 Android开源库选择
事件总线/消息通信 EventBus VS Otto VS RxJava RxAndroidEventBus支持异步线程场景,Otto主要在主线程中处理EventBus采用反射的方式对整个注册的类的所有方法进行扫描来完成注册,3.0后支持注解以及在编译期扫描,性能有所提升。Otto才有注解方式两个框架均缓存所有注册并有可用性的检测,同时可以移除注册。EventBus官网性能对比...
2018-07-03 17:36:41
372
原创 生命周期
Activity的生命周期 Activity的四种状态 - 运行状态Running:Activity位于栈顶,处于屏幕最前方 - 暂停状态Pause:Activity失去了焦点但仍然对用于可见 - 停止状态Stop:Activity对用户不可见 - 销毁状态Destroy:人为或系统原因(如低内存等)被销毁onCreate时界面尚不可见,onStart后界面可见,onRe...
2018-06-28 17:18:31
282
原创 Android IOS UI自动化测试:Appium
移动APP自动化测试框架对比【 腾讯移动品质中心TMQ】客户端自动化测试研究【美团技术团队】Appium【github】Cucumber【github】环境搭建Node.js 官网下载安装包并安装 验证:打开cmd,输入npmJava环境Android环境Ruby 利用rubyinstaller安装Ruby gem update –system g...
2018-06-05 17:03:34
2422
原创 初试React-Native小记
环境搭建本次开发环境 node: v8.9.4 npm: 5.6.0 react: 16.0.0 react-native: 0.51.0 代码编辑器:webstorm 模拟器:ios => siMulator or 真机 / android => Android Studio自带模拟器 or 真机安装Chocolatey,并使用C...
2018-05-31 18:03:30
1155
原创 Android热修复使用详解
到 http://www.tinkerpatch.com 平台注册一个app并获取appKey根据 http://www.tinkerpatch.com/Docs/SDK 文档做配置build.gradle.中// Top-level build file where you can add configuration options common to all sub-pro...
2018-05-25 16:37:53
1024
原创 搭建Jenkins持续集成服务
安装Jenkins服务器安装git并配置(略)apt-get install git安装jdk并配置(略)sudo apt-get install openjdk-7-jdk安装sdk并配置(略)wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz安装gradle并配置(略)w...
2018-04-28 14:21:22
450
原创 Android Studio使用备注
常规设置代码字体大小:Preferences (设置)页面搜索 Font 找到 Colors&Fonts 下的 Font 选项进行修改AS界面字体大小:Preferences -> Appearance 修改 快捷键设置 Preferences -> Keymap
2018-02-07 10:24:58
3187
原创 Android UI绘制 -- 滑动
基础scrollBy()、scrollTo()的本质都是修改View中的mScrollY、mScrollX;而修改这两个参数的效果就是View在绘制的时候会将整个View的坐标进行平移。 详见 不再迷惑,也许之前你从未真正懂得 Scroller 及滑动机制ScrollerScroller 只是一个普通的类,它封装了滚动事件,可用于View的平滑滚动效果。但是,它只是提供滚动时的数据变化,它本身不控
2017-12-22 15:51:05
389
原创 Android Framework -- Binder
Binder通信篇Binder的通信部分其实很简单,但源码中的业务封装太过复杂使得Binder看起来很复杂。抛开业务封装看下Binder通讯原理。ServiceManager就抛开了Binder的业务封装,直接使用它的通信功能。首先我们知道,逻辑地址空间有4G,其中3G为用户空间,1G为内核空间;我们的应用进程都在用户空间中且相互隔绝无法直接互相访问。于是乎有了进程间通信的需求。Android基于L
2017-12-03 18:21:45
476
原创 Android Framework--PackageManagerService
PackageManagerService负责Package的管理、应用程序的安装、卸载以及提供应用程序的信息查询PKMS的启动过程通过 Android Framework–启动流程 一文我们知道SystemServer阶段会启动各种服务,其中就包括PKMS 在SystemServer.java的run中private void run() { ... // Start servi
2017-11-06 14:20:53
387
原创 Android常用Support库
Support Annotation Library元注解,帮助开发者在编译期间发现可能存在的bug;如果出现违反注解的代码AndroidStudio会给出提示,lint扫描的时候也会给出错误提示 Null注解● Nullable 作用于函数参数或返回值,表示其可以为空 ● NonNull 作用于函数参数或返回值,表示其不可以为空资源类型● AnimatorRes:标记整型值是android
2017-10-13 17:26:32
854
原创 图片加载库Glide/页面路由框架Alibaba-ARouter/视图注入库Butter Knife/消息总线EventBus
Glide 4一、集成和基本用法Github地址: https://github.com/bumptech/glideapp或lib级别的build.gradle文件添加依赖:dependencies { compile 'com.github.bumptech.glide:glide:4.0.0-RC1' annotationProcessor 'com.github.bumptech.g
2017-09-04 18:10:14
1497
原创 Java虚拟机--类加载机制
类文件结构Class文件是一组以8位字节为基础的二进制流,中间没有添加任何分隔符。Class文件格式采用一种类似于C语言结构体的伪结构来存储数据,这种结构只有两种数据类型:无符号数和表。 无符号数属于基本的数据类型,以u1、u2、u4、u8来分别代表1个字节、2个字节、4个字节、8个字节的无符号数,无符号数可以描述数字、索引引用、数量值或者按照utf-8编码构成的字符串值。 整个Class文件本
2017-08-13 23:28:20
301
原创 Java虚拟机--自动内存管理机制
Java虚拟机内存分布虚拟机栈:Java方法的内存模型,即每个方法的执行都会创建一个虚拟机栈帧,方法的执行过程就是栈帧的入栈出栈,每个栈帧用于存储局部变量表、操作数栈、动态链接、方法返回地址和一些额外的附加信息(运行期会有JIT优化,但我们理论上认为这部分所需内存编译期可知);线程独立;StackOverflowError和OutOfMemoryError 局部变量表:存储编译期可知的...
2017-08-13 00:23:54
291
原创 Android Framework -- InputManagerService
分发流程 我们知道system_server会启动各种服务,其中包括InputManagerService,IMS的native层对应者一个NativeInputManager。事件分发的起源就在这里,NativeInputManager中有三个对象(EventHub,InputReader,InputDispatcher)各自都有一个工作线程。 首先我们输入设备的设备驱动文件都在dev/inp
2017-08-02 17:46:53
590
原创 Android Framework--开机启动流程
Android启动流程boot引导启动–>kernel启动–>Android核心启动(init–>runtime->zygote–&am
2017-08-02 16:42:44
1113
1
原创 Java高并发:多线程概览
多线程概览线程的状态流转图 小记:java线程的优先级范围:0~10,值越大优先级越高,默认5可运行状态的线程还需要获得CPU的时间片后才能运行ThreadLocal:每个线程有一个localValue存储ThreadLocal=>Object键值对,ThreadLocal.put数据的时候把自身作为key与value保存到localValue,get的时候在从local...
2017-08-02 14:45:27
248
原创 Android项目构建--gradle常用知识小结与多渠道多Apk打包
gradle概览Project build.gradle//配置构建过程buildscript {//配置依赖仓库 maven repositories { mavenCentral() }//配置依赖插件 gradle dependencies { classpath 'com.android.tools.build:gradle:0.
2017-08-01 10:19:58
722
原创 Java常见算法概览
概述java集合框架大致可以分为以下几个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections;Arrays和Collections是用来操作数组、集合的两个工具类)。 基本组成数组链表:单向链表,双向链表,循环单向链表,循环双向链表 class Entry<E> { Entr
2017-07-24 17:54:03
356
原创 Android性能相关--经验篇
ANR: ● CPU很高,说明当前设备很忙,CPU资源被抢占导致ANR–>Log中ActivityManager标签 ● IOwait很高,很可能主线程执行耗时IO操作 ● 其他,主线程被BLOCK常识: ● 系统每隔16ms发出VSYNC,对UI进行渲染,如果程序花了32ms完成渲染,则中间一帧渲染失败就丢掉了
2017-06-30 11:39:40
582
原创 Android异步相关-AsyncTask/HandlerThread/IntentService
AysncTaskAsyncTask本质上是一个Handler和线程池的封装,线程池用来异步处理后台任务,handler用来发送消息进行UI方面的交互 优点:适合简单短时的异步任务,可以同时爆发数量较大的异步任务(支持线程池,任务队列128个,最多同时并发5个)过程可控(即onPreExecute、doInBackground、onPostExecute等)HandlerThr
2017-06-25 22:16:35
346
原创 Android性能相关--工具篇
Android System Trace功能:主要用于发现性能瓶颈,可展示每个Frame的情况(Frame),查看有性能问题的点(Alert) 用法:Android Device Monitor -> Device -&
2017-06-21 23:51:58
1078
原创 Android异步相关-Handler
Handler机制相关Handler的几个关键对象Handler:Handler类几个核心对象Lopper、MessageQueue、Callback、IMessager,很明显Hadnler机制怎么跑都在这里了,后面再详细看Looper:几个主要的对象:static Looper存储了主线程的Looper;Thread存储当前线程;MessageQueue当前线程队列;还有一个static Th
2017-06-21 23:49:47
206
卡顿监控(实现CPU信息部分而已,可按需扩展)
2018-07-09
Android开发进阶从小工到专家(书签版)
2017-11-15
FFmpeg编译资源+DEMO_For_Android
2016-05-28
dcloud 5+sdk 插件demo
2016-05-17
微信公众号(未认证 个人订阅号)
2017-12-25
android事件传递的一个疑问,在线等大牛
2016-06-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人