代码笔记
文章平均质量分 96
李可乐
资浅Android开发,正在越走越深。
展开
-
设计模式-单例模式(Singleton)在Android中的应用场景和实际使用遇到的问题
介绍在上篇博客中详细说明了各种单例的写法和问题。这篇主要介绍单例在Android开发中的各种应用场景以及和静态类方法的对比考虑,举实际例子说明。单例的思考写了这么多单例,都快忘记我们到底为什么需要单例,复习单例的本质 单例的本质:控制实例的数量全局有且只有一个对象,并能够全局访问得到。控制实例数量有时候会思考如果我们需要控制实例的数量不是只有一个,而是2、3、4或者任意多个呢?我们怎样控制实例原创 2016-05-08 19:25:21 · 13032 阅读 · 7 评论 -
Android-怎样实现一个非阻塞的超时重试任务队列
起因最近接手一个项目,要把其中的阻塞任务队列,重构成非阻塞。在客户端很少有机会直接处理任务队列。项目完成需要总结经验。阻塞的发生我这里先说明我遇到的阻塞问题,我这里的阻塞不是多线程访问的阻塞,概念上是任务执行的阻塞。具体是:任务开始客户端准备数据,通过socket向服务器发送数据。阻塞等待服务器socket的ack回应。得到服务器的socket回应完成任务,取出队列的后续...原创 2018-04-11 15:23:36 · 2432 阅读 · 0 评论 -
Android开发-优雅的实现动态图片排版(类似微信图片展示效果)
介绍效果展示 说明上面的图片排版 - 实现了动态布局,针对不同图片的数量展示不同的排版布局。效果类似微信朋友圈的图片排版,效果略有不同。 - 正方形的图片控件,高度会随着宽度一起变化。实现这样的布局有很多种思路,只是什么样的方式更优雅。本文提供一种相对优雅的方式供大家参考。思路首先,优雅的方式肯定不是定义多种的布局,然后根据图片数量,判断显示那种布局。这样的代码不优雅。其次,也没有必原创 2016-11-04 00:42:46 · 13235 阅读 · 3 评论 -
Android开发-BottomSheet的使用和说明
Android开发-BottomSheetDialogFragment的使用和封装介绍在官方提供的android.support.design.widget包中,加入bottom sheet能够很方便的实现一些酷炫的功能。官方blog说明得比较简单,中文博客上也有一些介绍和说明 Android Bottom Sheet详解本文就是从这些博文中开始探索,最后总结一些使用经验和封装方便之后的使用。简单原创 2016-12-09 12:54:56 · 9997 阅读 · 4 评论 -
Android开发-从源码分析Fragment嵌套PagerAdapter生命周期,解决重建问题
介绍众所周知在Android开发中Fragment的生命周期非常复杂,复杂得甚至让Square公司提出了我为什么主张反对使用Android Fragment转而提倡使用自定义View组合替代Fragment。但是没办法公司项目还是使用了很多Fragment嵌套。遇到问题还是需要自己去处理的。这里以Fragment的状态保存和恢复(即重建)来讨论一些关于Fragment的生命周期问题。...原创 2017-07-06 00:51:06 · 3011 阅读 · 0 评论 -
设计模式-备忘录模式(Memento)的详解
介绍稍微了解一些java设计模式的都知道,设计模式中有一种备忘录模式,关于作用应该看名字就知道应该和状态保存有关。本文就从定义到示例代码到实际应用一步步说明详解。定义备忘录模式定义:在不破坏封装性的前提下,捕获对象的内部状态。 本质:保存和恢复内部状态 作用:在不暴露内部状态不破坏封装完整性的前提下,能够统一的得到内部状态,并且在恰当的时机恢复内部状态。内部状态在一个java类里面,不可避免的需原创 2017-07-04 18:25:17 · 896 阅读 · 0 评论 -
Android开发-Handler引起的内存泄漏-实验、分析、总结。
介绍最近在恶补Handler的知识,其中就涉及到了Handler引起的内存泄露问题,网络上有很多的分析文章。我就按照这些文章的思路,写代码验证,主要是验证和记录。 使用的内存检测工具是:LeakCanary 中文使用说明 英文原文: http://www.androiddesignpatterns.com/2013/01/inner-class-handler-memory-leak.h原创 2016-05-24 20:39:46 · 4429 阅读 · 9 评论 -
MVP架构-Android官方MVP项目和响应式MVP-RxJava项目架构分析对比解读
介绍MVP这个架构一直是Android开发社区讨论的焦点,每个人都有自己的分析理解众说纷纭。直到GitHub上Google官方发布用MVP架构搭建的项目。感觉是时候分析了。MVP架构简介这不是本文重点,所以摘抄自李江东的博文MVP架构简介 对于一个应用而言我们需要对它抽象出各个层面,而在MVP架构中它将UI界面和数据进行隔离,所以我们的应用也就分为三个层次。View:对于View层也是视图层,在原创 2016-05-27 17:45:11 · 16727 阅读 · 5 评论 -
Logger-功能强大使用方便的Log日志打印工具类
介绍Android开发中Log日志打印对开发者来说是非常重要的功能。但是感觉Log写多了也是烦,每次都需要设置一个TAG过滤值和具体的打印信息,而且打印的信息也不够丰富。 这里我推荐一个功能强大的Log日志打印工具类-Logger。(不是java.util.logging.Logger,只是恰好同名而已)使用使用非常简单,直接调用静态类方法。提供Debug/Info/Error三个级别的打印方法。原创 2016-05-17 19:41:39 · 5467 阅读 · 0 评论 -
Java语言一些记录
介绍这篇博文用来记录我平常想到的有关Java有趣或者重要的东西有序集合打乱我做过一道面试题,Java语言设计一个扑克牌游戏,发牌,洗牌。 我写Android客户端代码,数据集合一般都是服务器已经处理好了的。还从来没想过怎么把有序的集合打乱。 当时脑子里面就想到for循环里,一个Random随机对象生成随机数。然后就懵逼了。 今天突然想到这个问题就看了一下有关Java集合的源码。 首先这样的代原创 2016-05-29 00:42:27 · 871 阅读 · 0 评论 -
Android开发-数据存储SharedPreferences工具类、Set<String>保存问题、源码分析
介绍SharedPreferences作为Android提供给我们方便简单的存储数据的类。它内部的实现实际上是xml格式的文件存储数据,同时为了提升读写性能同时实现了内存缓存机制。关键源码在android.app包中的SharedPreferencesImpl类里面。值得一提的是Context实例的getSharedPreferences是抽象方法,看不到实现。因为整个Context套件被设计成装饰原创 2016-05-20 22:15:42 · 4949 阅读 · 0 评论 -
RxJava操作符的一些记录
介绍在项目中使用RxJava实现响应式编码有一段时间,RxJava的强大,简单的使用已经能够满足普通的开发需求,为了记录和加深自己的对RxJava的理解,写这篇博客记录一些自己对RxJava的使用和理解。前期说明下文用代码说明一些操作符的功能和使用。 首先提供基本的可观察对象,以下是基本的对象,后文中会根据需要进行修改。为了简化代码使用lamdba表达式。static Observable<Str原创 2016-04-20 18:35:21 · 821 阅读 · 0 评论 -
线程池运行机制分析-线程复用原理
介绍我们在涉及到多线程开发时,必然就涉及到线程池的使用,在阿里巴巴-Java开发手册中说到: 【强制】线程资源必须通过线程池提供,不允许在应用中自行显示创建线程 说明:使用线程池的好处是减少在创建和销毁线程上所花费的时间以及系统资源的开销,解决资源不足的问题,如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或“过度切换”问题。这里的规范很强势,直接定义为【强...原创 2018-05-29 11:49:40 · 3494 阅读 · 0 评论