6 Double-Smile

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 13w+

Fragment报错记录

欢迎使用Markdown编辑器写博客最近维护的项目里bugly中fragment报了几种错误,记录一下:Fragment already active 出现场景:这是Fragment调用setArguments()方法时报的错误。 原因:当Android堆栈正在删除Fragment而删除操作没有完成时,也就是Fragment仍保持active又被重新调用了setArguments(...

2018-08-14 11:32:43

Java设计模式——原型模式

概述原型模式是一个创建型的模式。该模式有一个样板实例,用户从这个样板对象中复制出一个内部属性一致的对象,这个过程也就是俗称的“克隆”。被复制的实例就是所称的“原型”。 原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象使用场景类初始化需要消耗非常多的资源,包括数据、硬件资源等,通过原型拷贝避免这些消耗通过new产生一个对象需要非常繁琐的数据准备或访...

2018-03-22 14:26:01

Java设计模式——Builder模式

概述Builder模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。使用场景相同的方法,不同的执行顺序,产生不同的事件结果多个部件或零件,都可以装配到一个对象中,但产生的运行结果又不相同时产品类非常复杂,或者产品类中的调用顺序不同产生不同的作用当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值时下面从一个Person例子进行分析重...

2018-03-21 15:35:15

Java设计模式——单例模式

概述单例模式:确保某个类只有一个实例,并自行实例化向整个系统提供这个实例实现单例模式的关键点:构造函数不对外开放,一般为private通过一个静态方法或者枚举返回单例类对象确保单例类的对象有且只有一个,尤其在多线程环境下确保单例类对象在反序列化时不会重新构建对象 通过将单例类的构造函数私有化,使得代码不能通过new的形式手动构造类对象,单例类会暴露一个公有静态方法来获...

2018-03-20 15:33:55

Android架构——MvpClean(kotlin)!!!

概述第一次知道MvpClean还是在搜寻架构组件的博客时,出于好奇便学习了下。MvpClean给我的第一感觉是烦,写一个功能要创建n个文件,但不可否认对于大型项目和多人合作开发有很大的优势。Clean架构在Clean架构中,代码被分层成洋葱形,层层包裹,其中有一个依赖性规则:内层不能依赖外层,即内层不知道有关外层的任何事情,所以这个架构是向内依赖的。看个图感受一下: Clea...

2018-03-07 13:25:15

Android架构组件——简单运用(Kotlin)

概述前面介绍了架构组件中Lifcycle、LiveData、ViewModel以及Room的相关知识,在看了谷歌的例子后用kotlin简单写一下实际应用,直接上代码环境依赖project的build.gradle文件:buildscript { ext.kotlin_version = '1.1.51' repositories { goog...

2018-03-06 15:58:14

Android架构组件——ViewModel

概述ViewModel,从字面上理解的话,它肯定是跟视图(View)以及数据(Model)相关的。正像它字面意思一样,它是负责准备和管理和UI组件(Fragment/Activity)相关的数据类,也就是说ViewModel是用来管理UI相关的数据的,同时ViewModel还可以用来负责UI组件间的通信。之前存在的问题ViewModel用来存储和管理UI相关的数据,可于将一个Act...

2018-03-02 20:24:36

Android架构组件—LiveData

概述简单地说,LiveData是一个数据持有类。它具有以下特点:数据可以被观察者订阅;能够感知组件(Fragment、Activity、Service)的生命周期;只有在组件出于激活状态(STARTED、RESUMED)才会通知观察者有数据更新;LiveData的优点没有内存泄漏:因为 Observer 被绑定到它们自己的 Lifecycle 对象上,所以,当它们的 ...

2018-03-02 16:01:37

Android架构组件—Lifecycle

概述Lifecycle组件是LiveData和ViewModle的基础,包括LifecycleOwner、LifecycleObserver。所以先学习Lifecycle有助于后续理解架构组件。为什么需要Lifecycle?在我们日常编码过程中,不可避免要和activity、fragment这些系统控制生命周期的组件打交道,在添加一系列功能的同时和这些组件生命周期绑定是完成一个优秀...

2018-03-02 10:17:15

Android架构组件—Room

概述android系统中的数据库SQLite使用起来并不方便,早期学习的时候一直很讨厌使用,后来出现了GreenDao、OrmLite、Realm极大的方便了android开发中的数据持久化。去年google推出了架构组件,其中room就是一款orm框架。添加Room依赖库详细查看room配置1.添加google的maven库,在project的gradle文件:all...

2018-03-01 14:50:35

Android—dagger扩展库

概述之前我们使用dagger注入时,都需要activity、fragment等宿主在component中注册,比如:((SomeApplicationBaseType) getContext().getApplicationContext()) .getApplicationComponent() .activity(this) .build...

2018-02-28 22:07:45

Android框架——dagger2知识点补缺

一、关于@Scope@Scope作用域其实是用来保持在实例有效作用域内的单例(由同一个Component提供)。比如系统自带的@Singleton,通常用在ApplicationComponent这个用来管理app全局实例的组件中,通过保持ApplicationComponent的单例才实现在整个应用生命周期内使用了@Singleton注解的依赖实例的单例,将其替换为其他自定义的作用域注解也可...

2018-02-26 09:58:53

Android框架——dagger简单实践使用

一、概述上一篇主要介绍了dagger的基本使用方法,这篇则分享一下我之前基于mvp架构的项目中的简单应用,也作为一个记录;最近才了解到mvpclean,把dagger的依赖注入部分放在presentation层比较合适。二、dagger架构思路由于还不算很熟悉dagger,所以只是将网络请求的httpclient以及数据库采用依赖注入的方式,并没有涉及到一些对象的作用域甚至包含、继...

2018-02-24 23:45:07

Android框架—Dagger2使用

一、概述现在android开发越来越多的应用到各种框架,一个好的app架构不但可以支持好的性能,同时也可以更方便快捷的开发功能。依赖注入是java后端开发spring的核心技术,而对于android来说现在由谷歌爸爸亲管的dagger则是不二之选。二、dagger环境配置使用Android Studio 创建一个新的项目,在Project的 build.gradle文件添加以下内容...

2018-02-24 16:34:51

Android蓝牙相关—蓝牙打印

一、概述最近公司刚好遇到个蓝牙打印的功能,以前实习时看到过类似功能,刚好这次自己实现,顺便记录一下。二、基本环境权限:<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/><uses-permission android:name="android.permission.BLUETOOTH"/>初始化蓝牙适配器:Bl

2017-09-08 11:08:59

Android Fragment学习与使用—高级篇

一、概述上一篇已经说明了Fragment的生命周期,以及基础的使用方法和一些api的作用。但是想要在项目中使用好Fragment必须能够清晰明白的管理好它的状态,以下会介绍实际开发会遇到的一些场景。二、Fragment回退栈管理Activity是由任务栈管理的,遵循先进后出的原则,Fragment也可以实现类似的栈管理,从而实现多个Fragment先后添加后可以返回上一个Fragment,当acti

2017-08-29 15:58:35

Android Fragment学习与使用—基础篇

一、概述Fragment已经出现了好几年了,首次接触是在替代TabHost配合RadioButton实现底部多页导航功能时,现在已经基本都改为ViewPaper+Fragment实现。但之后自己在开发功能时都不会下意识去使用这些技术,导致到现在还一知半解,刚好现在的项目同事用了很多Fragment,我自己也好好学习下,以下为记录。二、Fragment生命周期首先,Fragment是需要依存于Acti

2017-08-28 14:40:46

Android优化技巧—内存优化

一、查询应用运行的内存限制代码如下:ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);/** * 手机上app运行时的内存限制 */int memClass = activityManager.getMemoryClass(); // 以m为单位/

2017-06-03 23:12:53

Android小记——关闭实现Closeable的对象

一、背景《Android源码设计模式解析与实战》学习依赖倒置原则和接口隔离原则时书中所记,平时开发过程中并没有注意到,所以就记录一下。二、代码背景在Java6以及之前的JDK版本,有一个非常讨厌的问题,那就是在使用了OutputStream或者其他可关闭的对象之后,我们必须保证它最终被关闭了,否则可能会造成内存泄露等。这些可关闭的对象其实都是实现了一个Closeable接口,一共有100多个,我们可

2017-05-08 11:18:38

面向对象--单一职责原则和开闭原则学习(简易ImageLoader)

一、概述这篇是读《Android源码设计模式解析与实战》的第一篇记录,今天学习了面向对象六大原则中的其二:单一职责原则和开闭原则。单一职责原则简单来说一个类只实现一个功能;开闭原则则是对于扩展是开放的,对于修改是关闭的。这些原则都是用来优化代码的。二、简易ImageLoader实现下面通过一个简单的ImageLoader来说明编码过程中的以上两个原则。 首先,一个ImageLoader主要分为两部

2017-04-27 23:53:07

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!