Android
文章平均质量分 90
丶小嵩
Every journey begins with the first step.
展开
-
Android性能优化——常见的内存泄漏及处理方法
文章转载自:Sunzxyong 前言对于内存泄漏,我想大家在开发中肯定都遇到过,只不过内存泄漏对我们来说并不是可见的,因为它是在堆中活动,而要想检测程序中是否有内存泄漏的产生,通常我们可以借助LeakCanary、MAT等工具来检测应用程序是否存在内存泄漏,MAT是一款强大的内存分析工具,功能繁多而复杂,而LeakCanary则是由Square开源的一款轻量第三方内存泄漏检测工具,当它检测到程序中转载 2016-08-25 11:29:45 · 641 阅读 · 0 评论 -
设计模式—建造者模式及实例(BuilderPattern)
建造者模式(Builder Pattern)也称生成器模式,它属于创建型模式。原创 2017-01-23 17:29:50 · 3592 阅读 · 1 评论 -
Kotlin 系列 - 基本介绍(一)
前言 开始接触Kotlin是在今年年初的时候,发现 Android 业内开源大神 Jake Wharton 在推荐使用它。当时想着,事情绝对没有那么简单。果然,Google IO 2017 上宣布了 Kotlin 会成为 Android First class开发语言。最近一两个月时间里 ,Android 圈被Kotlin各种刷屏。 对kotlin语法不太了解的话,可以通过以下网站学习:原创 2017-07-01 15:27:33 · 1024 阅读 · 0 评论 -
Tinker原理深入理解(二)
原理及介绍现阶段,Android热补丁技术大致分为以下两个流派:Native:代表有阿里的Dexposed、AndFix与腾讯的内部方案KKFix;Java:代表有Qzone的超级补丁、大众点评的nuwa、美团的robust、百度金融的rocooFix, 饿了么的amigo。Native流派与Java流派都有着自己的优缺点,它们具体差异可参考此文:微信Android热补丁实践演进...原创 2017-07-01 17:34:31 · 7970 阅读 · 0 评论 -
Android O (8.0) 新特性介绍
Android O 功能和 API(文章内容均来Google开发者官网,有需要可自行翻墙查看更多资料)Android O 为用户和开发者引入多种新功能。本文重点介绍面向开发者的新功能。请务必查阅 Android O 行为变更以了解平台变更可能影响您的应用的领域。通知在 Android O 中,我们已重新设计通知,以便为管理通知行为和设置提供更轻松和更统一的方式。这些变更包括: 通知渠道:And翻译 2017-06-15 16:35:45 · 16346 阅读 · 5 评论 -
ViewDragHelper (三)- 打造仿陌陌视频播放页(深入篇)
本篇为该系列的第三篇,将通过一个实际的业务需求来讲述ViewDragHelper的实际运用。目录ViewDragHelper 的介绍以及初步使用请阅读这篇: ViewDragHelper (一)- 介绍及简单用例(入门篇) ViewDragHelper 的源码以及Callback的详情介绍请阅读这篇: ViewDragHelper (二)- 源码及原理解读(进阶篇) 利用DrageHelpe原创 2017-11-07 21:01:41 · 2653 阅读 · 1 评论 -
ViewDragHelper (一)- 介绍及简单用例(入门篇)
随着入Android这个坑的时间越来越长,愈加觉得深入掌握原理以及技术输出的重要性,会使用轮子和造一个好轮子还是有天壤之别的。授人以鱼不如授人以渔,将一些经验分享出来,希望能够让更多的人更加深入地理解它,并帮助到有需要的朋友。本系列分为三篇,会由浅至深地对DrageHelper 进行详细讲解。本篇主要讲解如何利用DrageHelper 创建一个可拖拽的控件,以及它的基本使用方法。原创 2017-09-20 21:33:34 · 3109 阅读 · 6 评论 -
ViewDragHelper(二)- 源码及原理解读(进阶篇)
声明:本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布本篇为该系列的第二篇,侧重讲解ViewDragHelper 的实现原理和源码逻辑,以及它所提供的Callback。目录ViewDragHelper 的介绍以及初步使用请阅读这篇: ViewDragHelper (一)- 介绍及简单用例(入门篇) ViewDragHelper 的源码以及Callback的详情原创 2017-10-10 21:02:13 · 3121 阅读 · 0 评论 -
Android-PickerView系列之源码解析篇(二)
前言 WheelView想必大家或多或少都有一定了解, 它是一款3D滚轮控件,效果类似IOS 上面的UIpickerview 。按照国际惯例,先放一张效果图: 以上是Android-PickerView 的demo演示图,它有时间选择和选项选择,并支持一二三级联动,支持自定义样式。 由于saiwu-bigkoo(吴哥)已经转行不干编程了,项目现已转交由我更新维护。目前我更新了原创 2017-03-02 12:40:47 · 28211 阅读 · 39 评论 -
Android AIDL机制
Android 接口定义语言 (AIDL)(内容来自Google 官方API文档,若有需要可自带梯子去官网查看)目录定义 AIDL 接口创建 .aidl 文件实现接口向客户端公开该接口通过 IPC 传递对象调用 IPC 方法另请参阅绑定服务AIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似。您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接...翻译 2017-02-14 14:35:29 · 1088 阅读 · 0 评论 -
Android-PickerView系列之介绍与使用篇(一)
声明:本文为博主原创文章,转载请注明出处:小嵩的博客 一、介绍Android-PickerView是一款仿iOS的PickerView控件,并封装了时间选择和选项选择这两种选择器,详细特性如下:WheelView —— 基础控件带有3D圆弧效果。支持文字、颜色、大小设置。支持背景颜色设置。支持item的分隔线设置。支持item间距设置。支持设置是否循环。...原创 2017-02-27 15:27:41 · 81743 阅读 · 41 评论 -
Android 线程池ThreadPoolExecutor详解
前言多线程并发是我们在开发中经常遇到的问题,提及线程池,首先我们得了解线程的相关知识。关于线程的详情介绍本文就不提及了,有不太清楚的朋友可以自行查找相关资料,下面简要概述一下进程和线程的概念,为后续内容(线程池)做铺垫。进程:每个app运行时前首先创建一个进程,该进程是由Zygote fork出来的,用于承载App上运行的各种Activity/Service等组件。 进程...原创 2018-02-23 18:08:52 · 8178 阅读 · 0 评论 -
阿里 Dexposed 热修复原理
前言Andfix 算是热修复方案中,native流派的典范了。在讲解Andfix之前,我们首先了解一下Dexposed,Andfix 是在Dexposed的基础上演进的。Dexposed介绍阿里手淘团队基于 Xposed 研发出来的 AOP 框架,方法级粒度,可以进行 AOP 编程、插桩、热补丁、SDK hook 等功能。它的热补丁方案原理图大致如下:: 从上图中我们可以看出,它...原创 2018-08-18 20:38:45 · 1106 阅读 · 0 评论 -
Tinker 合并及加载补丁过程源码分析 (三)
前言上篇文章我们讲了Tinker实现的主要原理,本篇文章主要对Tinker源码中补丁安装合并以及加载过程进行分析,本文分析基于Tinker 1.9.8 版本。主要内容有以下几点:安装合并补丁包过程加载补丁过程分析加载补丁资源过程分析加载补丁SO文件分析一、安装合并补丁包过程分析时序图如下:大致流程:1.1 在代理 Application 中初始化 Ti...原创 2018-08-27 11:57:35 · 2774 阅读 · 1 评论 -
美团热修复 Robust 原理解析(二)
Robust属于 Java方案,它是基于Instant Run 实现的。我们知道InstantRun 对应三种更新机制: 冷插拔,我们称之为重启更新机制 温插拔,我们称之为重启Activity更新机制 热插拔,我们称之为热更新机制 如果不熟悉 InstantRun,可参考这篇文章: 《从Instant run谈Android替换Application和动态加载机制》实现原理有...原创 2018-08-30 17:11:14 · 5123 阅读 · 0 评论 -
美团热修复 Robust 方案接入(一)
方案介绍Robust是美团点评技术团队提供的Android热修复解决方案,基于InstantRun方案实现,属于方法级修复。Robust的补丁成功率高达99%,总体而言它是一个比较稳定的热修复方案,对于追求补丁稳定可靠的项目,接入Roubust是一个不错的选择。接下来我们介绍一下如何去接入Robust。一、接入步骤:1.1 在整个项目的build.gradle加入classpa...原创 2018-08-29 18:27:23 · 4381 阅读 · 4 评论 -
阿里 Andfix 介绍及原理解析
开源项目官方介绍:AndFix judges the methods should be replaced by java custom annotation and replaces it by hooking it. AndFix has a native method art_replaceMethod in ART or dalvik_replaceMethod in Dalvik.从...原创 2018-09-21 21:14:20 · 2916 阅读 · 0 评论 -
Android 启动优化(一)
声明:本篇文章已授权微信公众号 YYGeeker 独家发布。前言对于一个APP来说,启动秒开,切换顺畅的体验能给用户留下良好的第一印象,启动速度对于用户体验及提高用户留存的重要性不言而喻。那么我们首先从它开始入手,从理论结合实际来谈谈有哪些优化启动速度及性能的技巧。一、介绍Google 官方介绍文档:https://developer.android.com/topic/performan...原创 2019-02-20 11:53:57 · 4391 阅读 · 0 评论 -
Dalvik与ART的介绍及区别(一)
Android Runtime(缩写为ART),在2013年作为Android 4.4系统中的一项测试功能正式对外发布,Android 5.0开始作为正式的运行时库取代了以往的Dalvik虚拟机。ART能够把应用程序的字节码转换为机器码,是Android所使用的一种新的虚拟机。而ART采用Ahead-of-time(AOT)技术。改善了性能、垃圾回收(Garbage Collection)、应用程序除错以及性能分析原创 2017-06-23 11:39:21 · 2473 阅读 · 0 评论 -
微信Tinker 热修复介绍及接入(一)
热修复(HotFix)是以补丁的方式动态修复紧急Bug,不再需要重新发布App,不需要用户重新下载覆盖安装的方式来实现代码的替换修改。这里就不多啰嗦了,可以自行搜索网上的介绍。目前主流HotFix方案对比...原创 2017-06-22 20:34:22 · 4285 阅读 · 0 评论 -
Android 本地缓存开源库 Reservoir 替代SharedPreferences
Android 本地缓存开源库 Reservoir 替代SharedPreferences 的使用介绍原创 2016-11-18 17:15:19 · 3148 阅读 · 1 评论 -
Android Fragment+Headview+Viewpager,Headview(头部)动态改变透明度(渐显渐隐)
最近项目有一个Viewpager+Fragment+Headview的布局,功能需求是Headview随着Fragment的列表(Recyclerview)的滑动而显示隐藏,并且头部在滑动过程中渐隐/渐显,形成视差效果。捣鼓了一段时间做出来了,现在有空就写下来记录一下,分享给有需要的人。工作太忙一直没时间写博客,不周之处还望见谅。 安卓5.0之后支持的原生控件CoordinatorLayout原创 2016-08-05 17:59:01 · 6526 阅读 · 7 评论 -
Android精仿淘宝/QQ空间标题栏渐变效果
最近在淘宝上囤年货买买买的时候,注意到淘宝购物详情页的渐变效果,觉得效果还是挺不错的,有种似曾相识的感觉,没错,好像QQ空间的标题栏也是类似的做法。鉴于这种效果在平时可能会用得比较多,所以就自己研究了一下然后把它实现出来了,项目完整demo在文章底部有链接,大家可下载参考研究。文章原创,转载请注明地址:小嵩的CSDN博客,地址:http://blog.csdn.net/qq_22393017本文会详原创 2017-01-18 17:12:10 · 6126 阅读 · 2 评论 -
Android getResources().getColor() 过时 替代方法
在Java代码中设置控件的Color时,用getResources().getColor()出现如下提示:getColor方法在Android 6.0即API 23中 已经过时,替代方法为:ContextCompat.getColor(context, R.color.black); (总是记不清替代方法是啥来着了,忘了三四次,干脆记录下来,免得以后又找来找去的)原创 2017-02-10 09:31:03 · 36416 阅读 · 4 评论 -
Android炫酷的Toolbar+Bottom+Fab悬浮按钮显示、隐藏、渐变的各种实现姿势
前言 由于手机屏幕大小的限制,各种控件需要根据需求进行显示,隐藏,移动等,以增加视觉效果,用户体验。就拿目前市场上常见的APP如知乎、QQ、淘宝、美团等来说,在他们的APP里面随处可见一些比较优美的处理方案。本文主要将一些常见的需要对控件进行显示、隐藏、渐变的场景进行整理了一番。如:点击屏幕Toolbar,bottom的显示隐藏;滑动Scrollview/Webview/Recyclerview显原创 2017-01-12 14:22:30 · 11683 阅读 · 6 评论 -
Android 自定义带动画效果的开关按钮
一个自定义的SwitchButton,控制开关的控件,简单实用,效果特别棒。项目中基本都常常会用到,比那种用两张图片做按钮背景,selector选择的方式,视觉效果好很多。忘了是以前从哪找的了,本着开源的精神整理了一下分享出来.原创 2016-08-13 11:35:16 · 2285 阅读 · 1 评论 -
Android-PickerView系列之封装篇(三)
注:此文交由跟我一起维护Android-PickerView 项目的伙伴totcw写的,友情链接:http://blog.csdn.net/totcw一、概述这是Android-pickerview系列的第三篇文章,主要是讲解一下时间选择器TimePickerView是如何封装的,关于怎么使用这个控件的可以查看Android-PickerView系列之介绍与使用篇(一),想要研究Wheel...原创 2017-03-02 09:16:12 · 5247 阅读 · 0 评论 -
Android-PickerView 三级联动选择器的标题和内容的字体大小、颜色设置
最近项目中使用了Android-PickerView这个开源项目,用来做省市区三级联动选择器,发现这个开源项目中有些地方处理得不是蛮恰当,自己做了下改动处理。 原项目GitHub地址:https://github.com/saiwu-bigkoo/Android-PickerView.git 项目的默认效果:用过这个项目的朋友想必会发现,默认的选择器字体大小好像偏大了点,那么要改小一原创 2016-10-19 16:57:17 · 8139 阅读 · 10 评论 -
公共技术点之依赖注入
前言最近没啥工作任务,看资料学习中。这是我看到的最简洁明了的一篇关于依赖注入的文章,扔物线大神写的,分享一下。不得不赞,逻辑清晰,文字简洁,以后写文章可以学习一下他的写法和表达思路。《公共技术点之依赖注入》 —— 分析者:扔物线,校对者:Trinea 依赖如果在 Class A 中,有 Class B 的实例,则称 Class A 对 Class B 有一个依赖。例如下面类 Human 中用到转载 2017-03-28 17:59:28 · 439 阅读 · 0 评论 -
Android 6.0新特性
注:本文是从谷歌官网翻译过来的,放这里便于查阅和消化理解,更多详细知识点请自备梯子访问官网~Android 6.0 (M) 为用户和应用开发者提供了新功能。本文旨在介绍其中最值得关注的 API。着手开发要着手开发 Android 6.0 应用,您必须先获得 Android SDK,然后使用SDK 管理器下载 Android 6.0 SDK Platform 和系统映像。翻译 2017-04-01 15:35:50 · 1293 阅读 · 0 评论 -
Android 5.0新特性
注:本文是从谷歌官网翻译过来的,放这里便于查阅和消化理解,更多详细知识点请自备梯子访问官网~API 级别:21 代号LAndroid 5.0 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。本文重点介绍您应该了解并在开发应用时加以考虑的一些主要变更。如果您之前发布过 Android 应用,请注意您的应用可能受到 Android 5.0 中这些变化的影响。翻译 2017-04-01 15:40:57 · 1119 阅读 · 0 评论 -
Android 7.0 新特性
Android 7.0 Nougat 为用户和开发者引入多种新功能。本文重点介绍面向开发者的新功能,多窗口支持,直接启动,支持VR等诸多新特性。翻译 2017-04-01 15:20:22 · 2437 阅读 · 0 评论 -
Glide配合PhotoView使用时,图片放大缩小时宽高显示出问题解决记录(新更新)
Glide配合PhotoView使用时,设置占位图出现放大缩小时宽高显示出问题的解决方案原创 2016-10-20 17:02:57 · 8680 阅读 · 8 评论 -
Android双波浪自定义控件(DoubleWaveView)
发现淘宝个人页顶部的自定义控件很炫酷啊有没有(IOS端),它这里是一个动态的双波纹效果,由于IOS端的效果它有周期性地渐变振幅的功能,比较复杂。对于振幅的渐变效果,当时就想着是怎么实现的,冥思苦想了老半天不得果(每次都重新计算设置正弦函数值,有点太耗费性能了)。 后面又拿起安卓机看了一下安卓客户端的效果,结果发现是个静态的双波纹,What ? 和IOS的差距咋那么大? 想了想,淘宝应该是出于对原创 2017-02-14 12:26:49 · 7632 阅读 · 14 评论 -
Android实用的优惠券控件
前言最近需要做一个优惠券功能,于是找了找,发现网上大多数优惠券控件的都是直接利用Paint绘制一个白色的新图层然后叠加上去,但是这样处理的话,当背景不是纯白色的时候,就会暴露出如下图问题:对于有点强迫症的人来说,看着怎么都有点难受。好吧,俗话说自己动手丰衣足食,咱就自己动手弄个更加完善的出来。完整代码项目地址在文章尾部有链接,需要的可以自行下载。正文为了解决掉边缘锯齿的问题,我用另外的思路实现了这个原创 2017-04-25 10:01:16 · 2989 阅读 · 0 评论 -
仿美团炫酷动画效果的A-Z字母排序侧边库
EasySideBar一款按字母排序的库,已封装好城市数据,可定制化强,也可以下载源代码用Module的形式引入自己改一改来使用,也可稍做改造定制成通讯录。手指触摸选中的屏幕区域,A-Z字母会有偏移动画,防止手指遮挡住字母,很大程度上提升了交互和用户体验度。觉得还不错的话欢迎Star ~使用步骤:1.添加Jcenter仓库 Gradle依赖:javacompile 'com.contrarywind原创 2017-04-26 09:44:27 · 2951 阅读 · 2 评论 -
Android4.2系统辅助功能打开时,加载WebView导致空指针异常解决记录
最近负责APP错误统计分析,修复线上一些BUG,有一个这样的问题,日志如下:java.lang.NullPointerException at android.webkit.AccessibilityInjector$TextToSpeechWrapper$1.onInit(AccessibilityInjector.java:753) at android.speech.tts.T原创 2017-06-01 10:37:20 · 2264 阅读 · 0 评论 -
Android 崩溃优化之Java篇(二)
声明:本篇文章已授权微信公众号 YYGeeker 独家发布。博主原创文章,转载请注明出处:小嵩的博客一、前言由于Android系统的碎片化、版本差异、厂商定制ROM等诸多原因,我们经常会遇到各种奇奇怪怪的崩溃,治理Android App的崩溃可谓是一个大老难题。对于一个大型应用来说,有时候可能一个很小的问题疏忽掉了,往往就可能影响成千上万的用户,最后对公司造成难以挽回的损失;也可能由于一个疏...原创 2019-07-02 15:33:12 · 1136 阅读 · 0 评论