自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lotty_wh的博客

不积跬步无以至千里

  • 博客(59)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 安卓字符串加密插件实现

利用Gradle插件实现无侵入性的字符串加密

2020-01-03 14:20:33 1427 2

原创 关于设备指纹,你想了解的都在这里

在移动安全领域,设备唯一标识符策略,也就是设备指纹是一种比较常见的安全手段。设备指纹安全是一种实现简单、门槛较低、安全性较高的安全手段

2020-06-01 16:42:02 3048

原创 随机访问的正确使用姿势

在对集合的访问中,一般会有两种访问方式:随机访问和顺序访问,不同的底层数据结构,在使用这两种访问方式时,效率是有区别的。一般来讲,内存地址连续的数据结构,在随机访问时的效率比内存地址不连续的要高。因为内存地址连续,可以通过下标很快的检索出对应的元素,反之由于内存地址不连续,在随机访问时,需要从内存地址起始位置按照链接关系一个一个的扫描,效率自然就降低了。典型的例子就是数组和链表。数组是一种内存地址连续的结构,对它的随机访问,效率比较高;链表是一种内存地址不连续的结构,对它的随机访问效率就比较低

2020-05-28 11:32:27 1762

转载 Android 11 新特性

Android 11增强了对用户隐私的保护,提供了很多吸引用户的新特性,并且可以更好地支持可折叠设备和 Vulkan 扩展程序

2020-05-20 18:04:56 640

转载 反射到底会对性能造成多大影响

不论是 Java 开发还是 Android 开发,反射都是非常好用的工具,但反射同时也是影响 Android 应用性能的一大原因,下面就讲两个例子让大家了解反射的坏处

2020-05-19 10:08:19 4423 1

转载 百度App网络深度优化系列《三》弱网优化

弱网问题,它是网络优化中最为复杂且需要反复验证和分析的问题

2020-05-15 17:36:47 566

转载 百度App网络深度优化系列《二》连接优化

HTTP协议的基础是连接,所以我们的系列《二》连接优化应运而生,希望对大家在网络方向的学习和实践有所帮助

2020-05-15 17:32:02 298

转载 百度App网络深度优化系列《一》DNS优化

网络优化是客户端几大技术方向中公认的一个深度领域,所以百度App给大家带来网络深度优化系列文章,其中包含系列《一》DNS优化,系列《二》连接优化,系列《三》弱网优化,希望对大家在网络方向的学习和实践有所帮助

2020-05-15 17:20:19 212

原创 轻松实现支付界面密码框控件

在应用中,涉及到支付界面一般都会采用自定义的控件,采用点号占位符来代替输入的密码,保护用户的隐私。很显然,这是一种输入框。针对这种场景,最直接的实现是采用多个输入框来实现的,这可能是最丑陋的实现了。

2020-05-13 00:32:18 669

原创 安卓数据埋点方案演进和实现

在互联网这个浪潮中,每个领域可能都会细分出某种技术体系,就像对于数据埋点这个简单的需求,市场上就存在多种可供选择的技术方案。本文只是抛砖引玉,介绍了目前几种比较流行的技术方案,分析了他们的利弊。笔者相信,在以后的技术演进中,埋点方案肯定会产生新的技术实现,并且随着互联网技术体系的演进,对于如何去解决数据埋点的这些方案肯定是更加高效、更加简洁、更加可靠的

2020-05-11 15:00:24 759

原创 安卓开发多module打包aar

在SDK开发过程中,我们可能遇到过需要将多个Module的代码打包成一个jar或者aar的情况,由于安卓打包的时候不会将module依赖的其他module打包进aar中,所以通过AS打包出来的aar是不完整的。但是在组件化开发盛行的当下,这种诉求确越发明显

2020-05-06 18:33:08 1787 1

转载 Chrome 必装插件,尤其程序猿

Chrome 浏览器有一个好处,就是插件极其丰富,只有你想不到的,没有你找不到的,这恐怕是 Chrome 浏览器被众多爱好者钟爱的原因吧

2020-04-28 23:29:08 350

原创 安卓打包流程一篇文章就够了

本文会带你深入了解安卓打包流程的各个细节。更重要的是,熟悉安卓打包流程会让你对apk瘦身、参数化构建、资源文件处理有更深的理解。

2020-04-24 18:02:49 4806

原创 安卓系统如何安全的打印日志

在安卓项目中,打印日志既是一种调试手段也是一种检测业务逻辑完整性的方法。在项目中,日志系统是不可或缺的。但是,大部分时候,我们只希望在debug包中输出日志,而不希望在release包中输出日志,所以我们需要一种安全的日志打印方式。

2020-04-21 13:41:37 392

原创 安卓设置EditText回车不换行

为了达到目的,我们似乎需要做两件事情,一个是设置输入框的行数为单行,二是对回车键的响应不表现在输入框的内容上。

2020-04-08 23:31:36 2670

原创 安卓性能优化-网络优化建议

移动设备因为其独特的网络环境,应用可以获取的网络速度、网络质量、网络带宽都有很大的限制,如何在这种限制环境下表现出优秀的用户体验,就涉及到应用的网络环境优化了,下面仅从几个常见的方面给出几点建议。

2020-03-30 00:41:13 261

原创 安卓性能优化-电量优化建议

现在安卓设备,很多都会有电量使用监控软件,可以查看设备上应用的耗电量情况。虽然有很多手机号称超长待机,但是他们也只是在手机静默状态下的测试数据,应用启动后的一些操作几乎都会不同程度的有一个电量消耗小高峰。比如唤醒屏幕、频繁的网络请求、复杂的cpu运算、传感器的监听、后台的长时间运行等等。如果你的应用一直保持着这种亢奋状态,那么它对电量的消耗是非常可怕的。作为用户,肯定不希望刚充满的电,一会儿就告罄...

2020-03-29 15:23:12 557

原创 一种寻找安卓应用绘制第一帧的方法

安卓中界面的呈现是通过窗口(window)来展现的,其中最主要的窗口是Activity,Activtiy主要以xml文件的形式来布局UI界面,最终会通过cpu和gpu来完成绘制工作,那么我们有没有办法来找到Activtiy第一帧绘制的时间点呢?

2020-03-28 23:38:30 682

原创 IntentService的踩坑与分析

IntentService是一个轻量级的执行异步任务的Service,它提供了一种任务队列消费的模式来处理任务,并支持以Intent来传递数据,与此同时,他还会在任务结束后,停止自身,一般用来在Service中执行耗时任务。

2020-03-25 18:37:59 1206 1

原创 带你从源码学习安卓系统广播机制

广播是安卓四大组件之一,他可以帮助开发者实现进程间通信、线程间通信以及类似事件总线的解耦方式。在安卓系统中,从广播的作用范围来划分的话,可以分为本地广播和全局广播。本地广播是一种在应用进程内的广播方式,全局广播则是一种在进程间的广播方式(当然也支持进程内)。

2020-03-23 17:02:55 206

原创 如何实现一个时钟控件

对于一个安卓开发者而言,在学习自定义View的过程中,肯定有尝试去实现一个时钟控件,本文就看看如何快速的实现一个靠谱的时钟控件。

2020-03-18 20:44:57 657

原创 从实现快速选择控件来看文本绘制

相信很多开发者在绘制文本时,会发现绘制出来的效果总是跟想象的有差距。这些差距大概率会反映在文字的位置上。当然,这些问题也不是不能解决。比如说直接使用系统的TextView控件,设置居中对齐;再比如根据字体大小,动态的调整文字的起点坐标等。本章节就实现仿通讯录右侧快速定位列表来看下文字绘制的坐标问题。

2020-03-17 18:16:56 104

原创 一文带你理解命令模式

命令模式是一种行为型设计模式,强调的是封装性,这点跟外观模式有点相似。但是因为他没有既定的强制规则,所以更加灵活多变。

2020-03-16 00:00:09 173

原创 从画布裁剪来说过度绘制

过度绘制又是布局优化中很重要的一个环节,有部分过度绘制是因为视图中View层级太多,背景层次太多,还有部分是因为View本身在同一块区域进行了多次绘制导致。关于视图层级,有经验的开发者都会在构造XML文件时进行处理,这点比较好注意到,也比较好优化。而关于View本身的重复绘制,可能不是很好处理,特别是在使用第三方控件时,需要通过修改源码来优化。

2020-03-14 23:52:43 1392 3

转载 Android 10 适配攻略

Android 10 适配攻略 ...

2020-03-13 17:38:15 1700

原创 Hook之WifiManager

安卓WifiManager是系统服务之一,应用程序是通过上下文对象Context进行跨进程通信来获取的。 这里我们来看一下,如何修改应用程序内的WifiManager的功能,也就是替换WifiManager。

2020-03-13 15:32:03 2144

原创 一文带你理解迭代器模式

作为一个使用Java语言的开发者,对于迭代器应该不陌生,在对集合进行遍历时,几乎都能遇到。迭代器作为访问者和容器类之间的第三者,它提供了一种对集合元素进行顺序访问的统一实现方式。

2020-03-12 20:13:44 118

原创 一文带你理解中介者模式

中介者模式也叫作调停模式,是处理项目中网状结构的一种设计模式。中介者,顾名思义就是周旋在各方中间的协调者,它让系统的各个模块之间可以单独的运转。

2020-03-12 14:51:48 404

原创 git如何忽略已经被追踪的文件

有时候我们在项目初始化提交时,将某个无用文件提交到了远程仓库中。之后,在整理项目时,你希望将远程仓库中的这个无用文件添加到. gitignore忽略文件中,从而令其修改不会被git追踪到。然而,具体怎么实施呢?

2020-03-11 23:03:02 3075 1

原创 一文带你理解桥接模式

桥接模式也叫桥梁模式,是一种结构型设计模式。既然叫做桥梁,那么必然是起到连接两端的作用,那么在设计模式领域,这两端是哪两端呢?

2020-03-11 21:15:18 366

原创 一文带你理解组合模式

组合设计模式也叫部分整体设计模式,是一种结构型设计模式,它将一组相似的对象看做一个对象来处理,从而可以一视同仁的对所有对象进行统一的访问。

2020-03-11 17:44:58 146

原创 一文带你理解外观模式

外观模式在日常开发过程中使用频率非常高,在组件化、模块化、SDK开发中更是常见。它是对外提供一个统一的高级接口,也就是外观类,而具体的业务细节都由外观类调用具体的业务模块来实现。

2020-03-11 00:57:06 96

原创 一文带你理解享元模式

享元模式是一种优化内存的设计模式,通过对象池的概念来避免频繁的创建和销毁对象,减少应用对GC造成的压力。

2020-03-10 19:04:37 125

原创 一文带你理解访问者模式

访问者模式是一种将数据操作和数据结构分离的设计模式,针对一种比较稳定的数据结构,通过接收不同的访问者,来实现对数据结构的访问遍历等操作,一般稳定的对象结构会提供一个accept方法来接收访问者,而访问对象会提供一个visit方法来对稳定数据结构对象进行访问,这与一次真实的访问事件是类似的。

2020-03-09 23:48:59 214

原创 一文带你理解模板方法模式

模板方法模式是相似对象的一种固定逻辑的抽取,在解决一个问题时,将某些固定不变的步骤抽取出来形成一套模板,然后通过继承和方法重写来提供不同的解决方案。

2020-03-09 21:18:27 107

原创 一文带你理解装饰模式

装饰模式也叫包装模式,是一种结构型设计模式,主要是提供一种扩展类功能的方式。在安卓世界中,许多带有wrapper字符串的类名都运用了这种设计模式。

2020-03-09 00:33:37 177

原创 一文带你理解适配器模式

适配器模式是一种极为常见的设计模式,特别是在Android世界中,像ListView的Adapter就是典型的适配器模式应用场景。适配器模式解决的是两个不相容的接口或者对象之间的兼容性问题,他提供一种混合适配器和目标对象之间的接口或者方法的混血对象。

2020-03-07 00:44:59 162

原创 一文带你理解备忘录模式

备忘录模式是一种行为模式。顾名思义,备忘录是用来记录和恢复信息的。备忘录模式的出发点也是这样。他主要涉及两个动作,状态保存和状态恢复。

2020-03-05 23:45:32 154

原创 一文带你理解代理模式

代理模式也叫委托模式,是一种结构型的设计模式。代理不仅仅在编程世界,在日常生活中也是到处可见,比如车票代理、法律委托、游戏代理等等。代理模式在Java世界中也是随处可见,经常遇到的大致可以分为静态代理和动态代理两大类。

2020-03-04 01:28:46 148

原创 一文带你理解观察者模式

观察者模式是一种使用比较广泛的设计模式,它的最大优点就是解耦,在某些地方,也叫订阅发布模式。

2020-02-28 00:50:00 166

jvm特性与java特性

对jvm特性进行深入阐述的概要。主要涉及到java开发、android开发、jvm虚拟机相关知识的阐述

2020-05-13

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除