Android
文章平均质量分 71
青菜小王子
我向往自由
展开
-
《Android开发艺术探索》阅读笔记——View事件体系(一)
View的位置参数MotionEvent和TouchSlop对象VelocityTrackerGestureDetector和Scroller对象原创 2017-03-13 19:54:27 · 486 阅读 · 0 评论 -
【译】Android Architecture Components
一个全新的库集合,可帮助您设计强大,可测试和可维护的应用程序。用于管理UI组件生命周期和处理数据持久性。便捷管理App的声明周期 新的生命周期感知(lifecycle-aware)组件可帮助您管理Activity和Fragment的生命周期。存储配置改变,避免内存泄漏,并使用LiveData,ViewModel,LifecycleObserver和LifecycleOwner轻松将数据加载翻译 2017-08-10 11:10:54 · 878 阅读 · 0 评论 -
《深入理解Android 卷I》读书笔记
initinit是一个进程,是用户空间的第一个进程。 对应源文件:init.c。执行main方法,执行许多操作。其中一个操作就是读取配置文件init.rc两个重要的职责:负责创建系统中的几个关键进程,比如创建zygote进程。提供属性服务(property service),类似于window平台的注册表zygotezygote是由init进程根据init.rc文件原创 2017-06-29 11:58:38 · 379 阅读 · 0 评论 -
5个Android开发中比较常见的内存泄漏问题及解决办法
在Android程序开发中,当一个对象已经不需要再使用了,本该被回收时,而另外一个正在使用的对象持有它的引用从而导致它不能被回收,这就导致本该被回收的对象不能被回收而停留在堆内存中,内存泄漏就产生了。内存泄漏有什么影响呢?它是造成应用程序OOM的主要原因之一。转载 2017-03-15 17:35:03 · 353 阅读 · 0 评论 -
Apk瘦身实践(常用的)
删除无用资源 配置so文件配置语言资源资源混淆原创 2017-04-01 15:39:34 · 388 阅读 · 0 评论 -
《深入理解Android 卷I》- JNI
翻译:https://developer.android.com/training/articles/perf-jni.html 参阅:《深入理解Android 卷I》博文是对一些概念的总结,还需参阅着上述书籍来看。JNI是Java Native Interface。它定义了一种托管代码(以Java编程语言编写)与本地代码交互(以C / C ++编写)的方式。它是供应商中立的,支持从动态共享原创 2017-03-23 13:58:35 · 628 阅读 · 0 评论 -
《Android开发艺术探索》读书笔记——Handler消息机制(ThreadLocal)
ThreadLocal是一个线程内部的数据存储类。它可以为各线程存储数据,同时只能由当前线程获取到存储的数据,对于其他线程来说则获取不到。它可以在不同线程中维护一套数据的副本,并且彼此互不干扰。原创 2017-02-27 17:41:13 · 815 阅读 · 0 评论 -
生产者消费者模式
生产者消费者模式说明:生产者只在仓库未满时进行生产,仓库满时生产者进程被阻塞;消费者只在仓库非空时进行消费,仓库为空时消费者进程被阻塞;当消费者发现仓库为空时会通知生产者生产;当生产者发现仓库满时会通知消费者消费;原创 2017-03-22 17:04:34 · 406 阅读 · 0 评论 -
AIDL浅析
AIDL(Android Interface Definition Language),即Android接口定义语言。为了实现Android系统中进程与进程之间的通信(IPC),而提供的一种通信方式。建立步骤以AndroidStudio为例,具体步骤如下: 1. 在java同级目录下创建一个名为aidl的目录; 2. 创建一个aidl文件; 3. 执行rebuild project即可自动生原创 2016-12-12 14:36:00 · 721 阅读 · 0 评论 -
Fragment和Activity的生命周期关系
转载:https://github.com/GeniusVJR/LearningNotes/blob/master/Part1/Android/Android%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md转载 2017-03-22 14:26:30 · 556 阅读 · 0 评论 -
Junit单元测试
白盒测试定义白盒测试又称结构测试、透明盒测试,是基于代码的测试。白盒测试是一种测试用例设计方法。全面了解程序内部逻辑结构、对所有逻辑路径进行测试。 错误潜伏在角落里,聚集在边界上。 测试方法白盒测试的测试方法中运用最为广泛的是基本路径测试法。基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序原创 2017-03-07 14:26:15 · 540 阅读 · 0 评论 -
《深入理解Android 卷I》init和zygote
initinit是一个进程,是用户空间的第一个进程。 对应源文件:init.c。执行main方法,执行许多操作。其中一个操作就是读取配置文件init.rc两个重要的职责:负责创建系统中的几个关键进程,比如创建zygote进程。提供属性服务(property service),类似于window平台的注册表zygotezygote是由init进程根据init.rc文件中的原创 2017-08-04 12:02:18 · 431 阅读 · 0 评论 -
JavaScript之数组
var arr = ["a","b","c"];//for...in..遍历的是数组或对象的属性for(var item in arr){ console.log(arr[item])}var colors = ['red', 'green', 'blue'];colors.forEach(function (color) { console.log(color);});//fo原创 2017-08-18 18:05:53 · 341 阅读 · 0 评论 -
《Android开发艺术探索》——View事件分发机制
概念同一个事件序列指的是从手指触摸屏幕的那一刻开始,到手指离开屏幕的那一刻结束,在这个过程产生的一系列事件。以down事件开始,可能经过n多个move事件,最终以up事件结束。原创 2017-03-14 16:55:36 · 516 阅读 · 0 评论 -
技术知识整理
MVC, MVP, MVVM不同的开发模式适用不同的场景,在复杂的业务场景下,Activity作为Controller层,显得非常臃肿,代码量大,逻辑复杂。同时View与Model也存在直接的交互关系。随之MVP诞生,Presenter层彻底将View与Model层隔离开来。当然需要编写大量接口来实现解耦。代码逻辑清晰,但代码量也增加不少。MVVM可以算是MVP的升级版,其中的VM是View...原创 2018-10-30 21:29:16 · 228 阅读 · 0 评论 -
Git提交日志格式规约
俗话说,无规矩不成方圆。 前端时间,阿里诚意献上重磅大礼:《阿里巴巴Java开发手册》,首次公开阿里官方Java代码规范标准。这套Java统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率、大大降低代码维护成本。那么问题来了,Git提交日志是否需要规范化呢?答案是肯定的。原创 2017-11-23 17:23:59 · 3435 阅读 · 2 评论 -
Android WebView 中 JS 与Java之间通信
Java调用JS在WebView中,Java调用JS的方法,实现方式是相对简单的。 采用如下形式即可: WebView.loadUrl(“javascript:function()”)原创 2017-11-23 16:21:52 · 3052 阅读 · 0 评论 -
一次面试题记录
有序数列{1, 2, 3, 4, 5, 6, … n} 从1到n的有序数列,0这个数字总共出现了多少次? 输入:整数n(1 ≤ n ≤ 1,000,000,000) 输出:0在数列中出现的次数原创 2017-11-03 14:25:19 · 449 阅读 · 0 评论 -
OkHttp源码分析(一)
OkHttpClient应该创建一个单例,方便所有HTTP请求重用。 这是因为每个客户端都拥有自己的连接池和线程池, 重用这些连接和线程可以减少延迟并节省内存。 相反,为每个请求创建OkHttpClient会浪费空闲池中的资源。原创 2017-04-05 18:06:12 · 904 阅读 · 0 评论 -
Application、ContentProvider、Activity执行顺序
再了解Google官方出品的Android Architecture Components过程中,发现组件库接入过程中并不需要做初始化工作。通过查看源码,且分析apk中的AndroidManifest.xml发现文件中包含如下配置原创 2017-11-08 17:25:55 · 2798 阅读 · 0 评论 -
根Activity组件启动过程
图例只描述了Activity组件在进程外的启动过程,即从Launcher点击图标启动MainActivity的过程。MainActivity的启动过程涉及到了三个进程。MainActivity组件、LauncherActivity组件和ActivityManagerService组件分别运行在不同的进程中。原创 2017-09-14 11:11:05 · 329 阅读 · 0 评论 -
Webpack和Gradle
Webpack是当下最热门的前端资源模块化管理和打包工具。它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源。还可以将按需加载的模块进行代码分隔,等到实际需要的时候再异步加载。通过 loader 的转换,任何形式的资源都可以视作模块,比如 CommonJs 模块、 AMD 模块、 ES6 模块、CSS、图片、 JSON、Coffeescript、 LESS等。 以下内容摘自转载 2017-08-15 11:41:45 · 1962 阅读 · 0 评论 -
使用Gradle命令查看项目中库的依赖关系
在Terminal中,可以通过 gradle 的命令查看项目中所使用库的版本,并且可以更加直观看到库之间的依赖关系。同时它们可以帮助您跟踪并解决与库版本冲突有关的任何问题。原创 2017-08-07 15:45:40 · 14825 阅读 · 0 评论 -
RxJava学习笔记
参阅 给 Android 开发者的 RxJava 详解 什么是函数式编程 RxJava 2.0 全新来袭 基于RxJava 1.x,结合RxJava 2.0整理学习笔记。概念1.实现了异步操作的库; 2.通过扩展观察者模式来实现异步;Observable发送消息,而Subscriber则用于消费消息。 与观察者不同的是,Observable一般只有等到有Subscrib原创 2017-03-09 19:27:41 · 502 阅读 · 0 评论 -
XML中输入特殊符号
特殊符号比如 ™, 要在xml中使用的话, 其实和html的转码是一样的, 参考下面这个表(使用十进制编码那一列)转载 2017-03-06 12:05:59 · 507 阅读 · 0 评论 -
彻底了解RxJava —— flatMap()
原文链接在第1部分中,我讨论了RxJava的基本结构,并介绍了map()operator。但是,如果你仍然没有意愿去使用RxJava,我可以理解。因为还你没有大量的工作。但是这将迅速改变–RxJava的大部分功能是包含在在框架中的所有Operators。让我们通过一个例子向你介绍更多的Operators。翻译 2017-03-09 17:49:08 · 3880 阅读 · 0 评论 -
Android Studio编译异常
项目编译阶段,出现了如下错误。使用无法通过编译,一直处于gradle build running状态。Exception in thread "png-cruncher_27" java.lang.RuntimeException: Timed out while waiting for slave aapt process, make sure the aapt execute at D:\And原创 2017-02-07 10:00:44 · 808 阅读 · 0 评论 -
java.lang.UnsatisfiedLinkError(一个让人想哭的Bug)
读取不到so文件导致的异常原创 2017-01-11 16:04:50 · 521 阅读 · 0 评论 -
Android系统全貌
转自Gityuan的Android开篇,对自我学习作进一步整理。 Android系统以Linux内核作为基底,上层采用Native层和Java层。系统分为内核空间和用户空间,并通过系统调用(Syscall)连通。用户空间主要采用C++和Java代码实现,通过JNI技术连通Java层和Native层(C/C++)。Loader层Boot ROM: 电源按下,引导芯片代码开始从预定义的地方原创 2016-12-27 10:25:25 · 702 阅读 · 0 评论 -
Android进程启动流程
理解Android进程创建流程 理解Android进程启动之全过程站在GITYUAN大神的肩膀上学习,用一张神图表示进程基本的启动流程. 上图还需对照源码进行查看,简述一下启动流程 在Android系统全貌描述到了Zygote孵化了第一个进程是system_server进程,而且孵化第一个App进程是Launcher,也就是桌面App。 当点击桌面App的时候,发起进程就是La原创 2016-12-31 01:27:47 · 765 阅读 · 0 评论 -
Android中窗口的创建过程
从WindowManagerService的角度来看,标题中所说的“窗口”并非Window类,而是一个View类。Window类是一个顶级窗口外观和行为策略的抽象基类。它只是提供标准的UI策略,如背景,标题区域,默认键处理等。窗口的类型Framework定义了三种窗口类型,三种类型的定义在WindowManager类中。第一种为应用窗口。所谓的应用窗口是指该窗口对应一个Activity,由于加载原创 2016-12-31 01:22:34 · 718 阅读 · 0 评论 -
2017,搞事情
2017,搞事情? 2017,搞点事情。原创 2017-01-05 10:03:42 · 709 阅读 · 0 评论 -
2016,我有些明白了
我们都曾不堪一击,我们终将刀枪不入。2016,我明白了姜还是老的辣。曾经一位同学和我闲聊时说,她遇到一个人,一起吃饭聊天的时候,谈话间把她分析了一番。仅仅是见了一面而已,性格,处事都说的八九不离十。我一直不敢相信,直到后来,我也遇到了。自愧不如,大彻大悟。2016,我明白了礼数。偶然一次机会,与一位半醉不醉的叔叔喝酒。最平常不过的斟酒,最平常不过的碰杯,发生了颠覆我陶醉于人生的想象。原来象牙塔的生原创 2016-12-26 12:23:24 · 2185 阅读 · 11 评论 -
仿京东商品列表页码提示效果
如图,此功能需要注意两个状态: 1. 当手指滑动,并且不离开屏幕的时候PageCountView才显示; 2. 当手指快速滑动,列表还在滑翔状态时,PageCountView也显示。XML布局<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/re原创 2016-12-23 11:22:09 · 1074 阅读 · 0 评论 -
Eclipse转Android Studio 项目过程中遇到的问题
command 'D:\Program Files\Java\jdk1.7.0_45\bin\java.exe''finished with non-zero exit value 2原创 2016-03-11 09:37:58 · 1415 阅读 · 0 评论 -
跌倒在Library的小坑里
由于功能模块需要集成到app中,因此小编的工作就是开发Library,打包aar。于是乎就开始了优雅地开发代码,遇到设置onClick事件时,很显然为了风格整齐,让Activity实现OnClickListener,复写onClick方法,使用switch…case…处理各种事件。然而…然而…编译出错了!!! 在Android Library中的switch语句中不能使用资源ID,原因是在libr原创 2016-09-01 13:28:28 · 519 阅读 · 0 评论 -
Android-Architecture之todo-mvp
todo-mvp官方地址UI层项目主要实现了4部分功能: - Tasks 用于管理任务列表 - TaskDetails 用于显示和删除任务 - AddEditTask 用于创建和编辑任务 - Statistics 显示与任务相关的统计信息原创 2017-02-28 17:17:50 · 491 阅读 · 0 评论 -
Android知识点——TaskStackBuilder
场景:当应用处于后台时,默认情况下,从通知启动一个Activity,按返回键会回到主屏幕。但遇到这样的需求,按返回键时仍然留在当前应用。类似于微信、QQ等点击通知栏,显示Chat页,点击返回会回到主Activity。原创 2017-02-21 11:30:07 · 585 阅读 · 0 评论 -
多渠道打包配置
多渠道打包相关配置原创 2017-02-27 13:11:55 · 353 阅读 · 0 评论 -
Android Studio下快捷键使用
文本预览、多行操作、抽取Method、抽取Style、抽取Layout、只执行一次的断点、模板方法原创 2017-01-05 14:51:38 · 694 阅读 · 1 评论