[android]
文章平均质量分 77
手艺人王学明
岁月本长,而忙者自促,天地本宽,而鄙者自隘
展开
-
组件化攻略-Activity/Fragment分发
前言App开发的场景:很多时候,是多人协作开发,组合使用。在组件化的情境下,我们需要特别注意解耦和动态似乎搞研发的,哪里都是解耦、聚合、动态。说来说去真的就是这些。所谓解耦每个模块在开发阶段,只受到所在模块影响,单一模块的更快,不会影响到其他模块。所谓动态模块的加载是随意的。不受布局,外部因素影响。像一块积木。分发的理念很多时候,业务开发的功能组合,是Activity和Frag...原创 2019-09-16 16:33:35 · 637 阅读 · 0 评论 -
Android UI优化之HierarchyViewer的使用
Hierarchy Viewer随SDK发布,文件在SDK\tools下,名为hierarchyviewer.bat。是一款简单好使的工具。 使用方式1. 先连上设备。2. 启动你要观察的应用3. 双击打开HierarchyViewer然后就可以看到下图4. 点击你要观察的app右下角就有加载的状态了,布局越大越慢。5. 接着就可以看到这样的布局原创 2017-05-12 17:11:08 · 410 阅读 · 0 评论 -
Android UI优化小结
前言Android系统的极致UI性能是60帧每秒,所以每帧处理的时间不能超过16ms。这是Android官方给出的流畅运行定义。我们来看一下,一帧需要处理多少数据。我手头有个1920x1080的pad,60帧的情况下,一秒的像素量就是1920x1080x60。设置个1920x1080的背景,转换成内存Bitmap.Config ARGB_4444:每个像素占四位,即原创 2017-05-12 14:39:51 · 295 阅读 · 0 评论 -
Android状态栏微技巧,带你真正理解沉浸式模式
看到篇有点意思的blog文,虽然以前也做过这样的实现。不过少了个总结。。。转过来原文地址:http://blog.csdn.net/guolin_blog/article/details/51763825什么是沉浸式?先来分析一下叫错的原因吧,之所以很多人会叫错,是因为根本就不了解沉浸式是什么意思,然后就人云亦云跟着叫了。那么沉浸式到底是什么意思呢?根据百度百科上的定义转载 2016-08-25 16:58:49 · 698 阅读 · 0 评论 -
Android Vsync详解
简介Android4.1(Jelly Bean)引入了Vsync(垂直同步信号量),用来同步渲染,让AppUI和SurfaceFlinger可以按硬件产生的VSync节奏进行工作。切入正题他们怎么做到的那么,你如何使一个8个月的Galaxy Nexus运行像一个Galaxy S III?这要大量的艰苦工作。这个艰苦工作的详细由两个我最喜欢的I / O主持人Chet Haase...翻译 2017-03-21 18:10:31 · 6916 阅读 · 1 评论 -
移动端的架构演化
是什么决定了物种的生存方式和形态?环境从08年HTC T-Mobile G1开始,我国算是掀开了Android智能机的时代,13年12月4日我国正式向三大运营商发放4G牌照。4G时代的到来,给移动端带来了蓬勃发展。第一阶段:业务探索阶段。这个阶段的产品逻辑一般有几个特点,产品逻辑,展示,交互简介,业务复杂度低,以商品的搜索、展示、购买等核心流程为主。发布模式以 需求收集、评审...原创 2019-09-03 13:52:49 · 847 阅读 · 0 评论 -
特别注意Android Q中的非SDK受限变化
在Android P中,Google限制了非SDK接口。在Android Q中,Google再次更新了限制的非SDK接口。而且,单独将这一块拎出来,着重描述了一篇。可见重要程度增强。浅灰和深灰列表的命名发生变化在 Android 9(API 级别 28)中,灰名单分为以下两个列表:包含非 SDK 接口(无论目标 API 级别是什么,您都可以使用这些接口)的浅灰列表。包含非 SDK 接...原创 2019-08-16 10:56:22 · 6633 阅读 · 0 评论 -
Android 10.0 行为变更(二)针对 Android 10.0 的应用
注意:除了此页面所列的变更以外,Android Q 还引入了大量变更和限制以增强用户隐私保护。有关详情,请参阅隐私权页面。非 SDK 接口的受限情况出现变化官方明确指出:目标是在限制使用非 SDK 接口之前确保有可用的公开替代方案。反射或JNI必须要有替代方案!如果您不打算以 Android Q 为目标平台,那么其中一些变更可能不会立即对您产生影响。虽然您目前可以使用灰名单中的一些非 S...原创 2019-08-16 10:47:02 · 5956 阅读 · 0 评论 -
Android 10.0 行为变更(一)针对所有 API 级别的应用
非 SDK 接口限制官方明确指出:目标是在限制使用非 SDK 接口之前确保有可用的公开替代方案。反射或JNI必须要有替代方案!如果您不打算以 Android Q 为目标平台,那么其中一些变更可能不会立即对您产生影响。虽然您目前可以使用灰名单中的一些非 SDK 接口(取决于您应用的目标 API 级别),但如果您使用任何非 SDK 方法或字段,则应用无法运行的风险终归较高。要了解详情,请参阅非...原创 2019-08-16 10:34:18 · 8732 阅读 · 1 评论 -
谈业务技术的技术含量
前言很多人都觉得前端业务研发程序员层次低,难度小,复杂逻辑都是后端的。业务技术的技术难度提现在哪里?往往,业务所面临的复杂性来自不断变化的需求。或许经历过,有多角色,多业务场景,多逻辑验证,多阶段确认的需求,你才会有所体会。场景这里最核心的是 货物的上下架流程。这里涉及到的有人员类型:配送员、入库员、分拣员、上架员,还有小队长、中队长、大队长。条码类型:运单、运单包、货架号。...原创 2019-08-15 17:37:08 · 629 阅读 · 0 评论 -
Android 9.0 行为变更(一)针对所有 API 级别的应用
电源管理Android 9引入了一些新功能来改进设备电源管理。从两个维度进行优化:应用使用频率及优先级、改进省电模式。电源管理功能可以分为两个类别:应用待机群组基于应用最近使用时间和使用频率,帮助系统排定应用请求资源的优先级。省电模式改进更主动地将应用置于应用待机模式所有APP都受到 后台执行限制灭屏时,位置服务可能被停用后台应用无法访问网络注:这些变化适用于所有应...原创 2019-08-15 11:27:22 · 2499 阅读 · 0 评论 -
Android 8.0 行为变更(二)针对 Android 8.0 的应用
- 针对 Android 8.0 或更高平台版本进行编译,或将 targetSdkVersion 设为 Android 8.0 或更高版本的应用开发者- 必须修改其应用以正确支持这些行为提醒窗口使用 SYSTEM_ALERT_WINDOW 权限的应用无法再使用以下窗口类型来在其他应用和系统窗口上方显示提醒窗口:TYPE_PHONETYPE_PRIORITY_PHONETYPE_SY...原创 2019-08-14 15:48:38 · 765 阅读 · 0 评论 -
Android O不受后台执行限制的隐式广播
作为Android 8.0(API级别26)后台执行限制的一部分,针对API 26或更高的App无法再在AndroidManifest中隐式注册BroadcastReceiver。但是,目前有几个Broadcast 免于这些限制。无论应用程序所针对的API级别如何,应用程序都可以继续为以下广播注册监听器。注意:即使这些隐式广播仍然在后台工作,您应该避免为它们注册Listener。ACT...翻译 2019-08-14 14:08:48 · 925 阅读 · 0 评论 -
[利其器]Android Lombok减少代码量
最近发现后端开发中,用到了一款第三方插件Lombok。利器啊。真可以减少代码量。Setup在每个build.gradle都加上这么两句dependencies { ... //Lombok //加上下面两行 compileOnly 'org.projectlombok:lombok:1.18.8' annotationProcessor 'org.proj...原创 2019-08-19 11:31:31 · 282 阅读 · 0 评论 -
结合公司业务后,对极光推送的进一步思考
公司决定启用推送技术。目前来说,用的是极光推送。免费版。主要目标为ios + android。不排除未来有JS上实现的需求。极光推送的文档只看到ANDROID、ios、winPhone,就是不支持js。从这点看,技术选型的拓展性不强。##回到现状因为手机本身的电量、网络的限制,我们必须要根据手机本身的特点,尽量节省电量和流量,同时要保证数据到达客户端的及时性。为了解决数据同步,两个方式...原创 2019-05-22 11:47:50 · 455 阅读 · 0 评论 -
Android代码优化---Android Lint
英文原文:http://tools.android.com/tips/lint原文:Android Lint is a new tool introduced in ADT 16 (and Tools 16) which scans Android project sources for potential bugs. It is available both as a command lin翻译 2016-08-09 11:29:03 · 2345 阅读 · 0 评论 -
Android Studio 设置 sublime 主题
看习惯sublime主题的孩子们在使用android studio 的时候,习惯于去设置相应的主题,可惜studio原生木有。不过没关系,众多有爱心的人士已经做好了主题,稍微配置下就好了。1:下载地址https://github.com/OtaK/jetbrains-monokai-sublime2:启动Android StudioFile->Import Se转载 2016-09-19 15:23:04 · 3585 阅读 · 0 评论 -
组件化策略-Gradle优化
前言何为组件化?即解耦与聚合。主要 是代码优化,却不限于代码。程序员需要 理解整个工序流程,对优化的主体进行拓展。Think Outside Of The Box这是对效率的思考,对组织形式的思考。拓展探索现阶段效率的瓶颈。本文从Gradle的角度去考虑这个问题。Gradle基础每个build.gradle是个project对象,Gradle管理着project对象的生命周期...原创 2019-09-16 11:40:59 · 627 阅读 · 0 评论 -
组件化攻略 - 代码物理隔离
当不了解Project Code时,当新加入一个团队时,当接盘一个新功能时。你需要各司其职的天然屏障,物理隔离。Git提供了这样的机会。利用git submodule进行代码的文件隔离submodule子模块系统git管理,适合project的团队开发代码管理;对标的还有SVN。这是接触了好多年的代码管理。其优势文件系统级的物理隔离可以自由组合想要的submodule能...原创 2019-09-12 11:54:09 · 699 阅读 · 0 评论 -
从RxBus开始改变,源码要这么看,才算没白看
这篇文章,打算 换个编写的方式去编写。旨在改变写法,提升质量。目录结构如下源码简介(大致讲述环境)这些问题怎么实现?(带着问题去看源码)流程图级目录结构(讲函数的用途)函数解析(讲如何实现)小结(讲最简洁的 核心思想&个人理解)带着问题继续前行源码简介RxBus版本: v2.0.1源码地址: github链接简介:RxBus与EventBus功能上差不多,...原创 2019-09-11 17:04:33 · 671 阅读 · 0 评论 -
组件化攻略-解耦Fragment
我的App里头,主要是2种形式的Activity:单Activity单Activity+多Fragment的结构。这里主要是单Activity+多Fragment结构的解耦。所谓Fragment解耦,最起码要达到build.gradle配置的module,移除就移除,不会对App的编译产生影响。若是有声明 import 去除module的类。自然就会报错。这是耦合。情景:App ...原创 2019-09-10 14:26:44 · 729 阅读 · 0 评论 -
这样才是写工具类
什么是工具类?这种 低级的问题还问的出来。最近我发现 好多东西都是一看就懂。然而,自己不知道什么时候就能写出 shi 一样的代码。这是因为编码时的构思,没有明确下来,构思不清晰,就相当于地基不稳。接下来,我们以 TimeUtil为例讲解我的思考。TimeUtils编码时的考量偶然的一次CodeReview,发现TimeUtils竟然不知道什么时候,变乱了。我知道 我该重构了。可是...原创 2019-09-09 16:45:33 · 3686 阅读 · 1 评论 -
[利其器]优雅如斯的反射工具: JOOR
JDK的反射api代码又长又难用。JOOR的目标 便是 简化 JDK反射API。JOOR是java.lang.reflect包的一个简单包装器。先看一个范例这是我用反射实现的一个全局配置部分代码Class parentClass = object.getClass(); WinConfig annotation = (WinConfig) parentClass.getAnnot...原创 2019-09-09 16:22:50 · 834 阅读 · 0 评论 -
组件化攻略-数据存储
本章节讲存储,大概会是这样的目录结构:存储方式常用存储组件:GreenDao、Realm。组件化存储存储方式Android的存储大概有SharePreference、File I/O、Sqlite、ContentProvider、网络。SharePreferences轻量级数据存储。存储简单数据类型,以Key/Value的形式进行储存。原理:对XML进行修改。适用:1...原创 2019-09-09 11:52:27 · 370 阅读 · 0 评论 -
组件化攻略-R2.java的今生前世和静态变量
ButterKnife已经成为众多开发者的选择。简直不要太好用。其优势1、强大的Resource绑定和Method事件处理功能,简化代码,提升开发效率2、方便的处理Adapter里的ViewHolder绑定问题3、运行时不会影响APP效率,使用配置方便4、代码清晰,可读性强截止 2019年9月6日。ButterKnife Version 10.1.0 (2019-02-13),已...原创 2019-09-06 16:26:47 · 475 阅读 · 0 评论 -
组件化攻略-资源合并与冲突
组件化、模块化就是理清关系、解耦、组合的过程。资源合并先来回顾下,模块化架构的图。组件化中,Network、Image等功能模块 与 BaseLib是一样的,都是Library Module,所以,都将会被编译成aar文件。先学一个命令./gradlew module_name:dependencies这是gradle命令,可以查看module的依赖树。你会发现preRelea...原创 2019-09-05 15:30:45 · 1672 阅读 · 0 评论 -
android Manifest.permission normal权限合集
名称版本sdk权限值权限描述ACCESS_LOCATION_EXTRA_COMMANDSAdded in API level 1android.permission.ACCESS_LOCATION_EXTRA_COMMANDSAllows an application to access extra location provider commands.ACCE...原创 2019-09-05 11:32:02 · 1332 阅读 · 0 评论 -
组件化攻略-权限管理
在开发过程中,我们时常会声明很多权限。都是熟悉的。我们哪个module需要这个权限,就在哪个modue的AndroidManifest中声明。权限可以到处声明,最终的AndroidManifest会合并这个重复声明的权限,所以,相同的权限只会被声明一次。简述权限声明Android权限定义的位置:frameworks/base/core/res/AndroidManifest.xml附...原创 2019-09-04 16:52:28 · 528 阅读 · 0 评论 -
Android线程模型
在Android系统中,app第一次被启动时,系统会自动为这个app创建一个包含单一Thread的Linux进程。一、进程默认情况下,该App的所有组件都会在同一个进程和线程里。(main线程。也称UI线程)。也可以通过定义android:process属性指定组件运行在其他进程里。好处是:让不同app共享一个Linux用户ID、赋予同样的权限。当然,在lowmemory时原创 2016-10-31 12:47:59 · 818 阅读 · 0 评论 -
git log列出某个区间的提交记录
git log列出某个区间的提交记录git log的命令格式git log [<options>] [<since>..<until>] [[--] <path>...]预置条件已经有多个版本提交的记录git tagV1.0.3V1.0.4V1.0.5V1.0.6v1.0.1v1.0.2v1.1....原创 2018-04-19 10:56:49 · 7384 阅读 · 0 评论 -
程序员升级路上要学会的3个工具-甘特图
程序员走向哪里? 有三个tools我们必须要学会:思维导图,PPT,甘特图。PPT:我们都知道思维导图:用一张图来理解甘特图: 甘特图有不少,我选了Microsoft Project.MicrosoftProject:http://www.xp85.com/html/Microsoft_Project_2010.html激活工具Office ToolKit:原创 2016-10-18 14:48:42 · 1395 阅读 · 0 评论 -
三分钟学会git命令
用了git将近一年,总结一下能确保没问题的一些场景。特意简化了一些操作。减少了一些指令。最近9个月git管理没有碰到问题场景一:ssh配置参考github文章 github关于ssh生成添加 一般来说,公司内部的github也是有相关的文章的。 需要注意一下几点 ssh生成指令:ssh-keygen -t rsa -C &amp;amp;amp;quot;your.email@example.com&amp;amp;amp;quot; -b 4原创 2018-07-15 17:04:56 · 638 阅读 · 0 评论 -
Activity生命周期
温故知新,新增了一些理解。原创 2017-06-20 14:52:34 · 351 阅读 · 0 评论 -
分享JSON解析小心得
一个良好的编码习惯,最少要能让编写意图 跟 编写结果 保持一致。这里{}是对象,"{}"就是字符串,当你用"" 去扩 {},那是 将 对象 改变成 字符串。 这显然是编程意图的不明确导致。表面上看,一点问题都没有,实际上,确确实实的违背了数据格式在设计时的初衷。。。坚持实体化,坚持JSON数据格式的统一,坚持使用JSON生产工具原创 2017-08-19 09:06:48 · 1694 阅读 · 0 评论 -
RK3288-OTA编译失败解决办法
环境:RK3288Android版本:LL问题描述:编译OTA失败,错误信息就是网上那堆东西。网上资料现状:一大抄,一堆转载主要包括:java环境配置不对,common.py的什么缩进不对等等。。。结果:无法解决的问题。。。。解决方案:build/tools/releasetools/common.py修改一下。贴上patch。。。若有一样的代码原创 2016-09-06 11:53:30 · 2799 阅读 · 0 评论 -
探究---RemoteCallbackList---activity与service之间的联系
RemoteCallbackList.java的定义原创 2016-04-19 13:54:28 · 6294 阅读 · 0 评论 -
解析自动休眠--->实现自动关机
从Application上往下跟,解析自动休眠的实现策略Application层Settings----Display----Sleep这里是超时设置的地方。文件目录:packages/apps/Settings/src/com/android/settings/DisplaySettings.java这里比较简单:onCreate(){…mScreenTime原创 2016-04-11 10:45:38 · 4954 阅读 · 1 评论 -
零起步了解RK3288环境搭建以及版本编译
RK3288环境搭建物理配置1. 在获取到source code之后,需要准备起码100G的空间供一个版本完整编译。本地服务器编译8G足以,虚拟机则需要16G ram2. ubuntu版本尽量在12.04或者14.04,64bit为宜 软件配置1. JDK: JDK5: froyo跟之前的版本; JDK6: gingerbread原创 2015-12-02 10:37:10 · 11308 阅读 · 0 评论 -
RK瑞芯微平台编译环境搭配记录
系统安装1. 装ubuntu 14.04版本。12.04也行。如果装synergy,那么请用12.04.4!( 12.04.3及之前的。在切换时会黑下屏幕)ubuntu上可以用quicksynergy2. 更新新的源 安装必要的包1. 请直接复制,命令如下:sudo apt-getinstall git-core gnupg flex bison gperf build-原创 2015-11-20 11:53:03 · 1898 阅读 · 0 评论 -
Handler、HandlerThread、Thread的区别
留空原创 2015-10-30 11:59:12 · 1417 阅读 · 0 评论