自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 Fragment报错记录

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

2018-08-14 11:32:43 1077

原创 Java设计模式——原型模式

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

2018-03-22 14:26:01 239

原创 Java设计模式——Builder模式

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

2018-03-21 15:35:15 300

原创 Java设计模式——单例模式

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

2018-03-20 15:33:55 215

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

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

2018-03-07 13:25:15 2442

原创 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 798

原创 Android架构组件——ViewModel

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

2018-03-02 20:24:36 25603 2

原创 Android架构组件—LiveData

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

2018-03-02 16:01:37 4143 1

原创 Android架构组件—Lifecycle

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

2018-03-02 10:17:15 7014 1

原创 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 5314 2

原创 Android—dagger扩展库

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

2018-02-28 22:07:45 328

原创 Android框架——dagger2知识点补缺

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

2018-02-26 09:58:53 178

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

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

2018-02-24 23:45:07 558

原创 Android框架—Dagger2使用

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

2018-02-24 16:34:51 4546

原创 Android蓝牙相关—蓝牙打印

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

2017-09-08 11:08:59 1600 1

原创 Android Fragment学习与使用—高级篇

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

2017-08-29 15:58:35 6475

原创 Android Fragment学习与使用—基础篇

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

2017-08-28 14:40:46 474

原创 Android优化技巧—内存优化

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

2017-06-03 23:12:53 254

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

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

2017-05-08 11:18:38 1398

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

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

2017-04-27 23:53:07 362

原创 Android控件架构(20170427)

1.UI界面架构每个Activity都包含一个Window对象,通常由PhoneWindow来实现,将一个DecorView设置为整个应用窗口的根View,这里面所有View的监听事件,都通过WindowManagerService来进行接收,然后通过Activity对象来回调对应的onClickListener。在展示上,DecorView将屏幕分为上下两部分,一个是TitleView,另一个是C

2017-04-27 16:36:10 229

原创 Android学习笔记---体系与系统架构(20170426)

1.系统架构Android从上往下分为应用层(Application):主页、通讯录、联系人、浏览器等我们平常使用经常见到和使用的东西所处的一层;Framework层:该层就是我们应用开发基于的接口层,包括常用的四大组件以及各类Manager;库和运行时:库主要是android的内嵌功能支持,比如说SQLite、OpenCLJES等等(对该层大多数东西还未了解,以后有待补充),运行时则是我们应用运行

2017-04-26 22:15:02 332

原创 Android小技巧—Activity管理

一、概述本章节主要是记录一下平时android开发过程中activity的管理方法,我们通常在开发过程中可能会有突然退出app,或者获取某个活动对象等等各种情况处理,这时候有个全局管理的Activity栈将会方便很多。Android系统有自己的Activity管理机制,也就是 Activity Stack(栈),奉行着先进后出原则。所以,我们就通过Stack来进行Activity的管理。下边我将记录

2017-02-12 10:21:43 268

原创 Android自定义相机之Camera1

一、概述本章节主要讲述使用android.hardware.Camera类来实现自定义相机的流程,虽然在api21中该类已被废弃,有了一套新的CameraDevice方法,但是为了向下兼容我们还是可以学习一下Camera1的使用。如有错误或优化之处,欢迎留言指导。二、具体实现首先介绍下如何判断是否支持照相机功能,代码如下:private boolean checkCamera(Context con

2017-02-09 22:34:39 856

原创 Android基础—Camera调用及注册

一、概述本章节主要讲述学习android摄像头使用中的实践以及注意点,主要分为系统Camera的调用方法、指定相片路径、原图和缩略图、注册应用为Camera应用这几部分知识。如有错误或优化之处,欢迎留言指导。二、调用系统Camera核心代码:// 隐式Intent调用Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);start

2017-02-09 14:24:19 550 1

空空如也

空空如也

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

TA关注的人

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