自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (3)
  • 收藏
  • 关注

原创 AndroidPN消息推送原理分析

简介AndroidPN:基于Asmack实现和服务器端的持久连接,以实现服务器对客户端的推送,全称为android push notification。涉及的扩展内容Asmack:适应Android使用的改进版的Smack库,Smack库是一个用于与XMPP服务器进行即时通信的类库,包括即时消息和群组消息Asmack中通信主要使用的数据包类型(Packet): IQ: I...

2018-09-18 15:32:40 1231

原创 Android推送的核心原理:长连接的简单实现

实际需求移动端需要实时的获取服务器的数据解决方案轮询方式:应用程序开启定时的轮询,不停的向服务器请求数据。SMS push:发送二进制短信到移动终端,来达到通知终端的目的。客户端拦截这类短信,然后采取相应的操作持久连接方式:应用程序与服务器建立一个长连接,使服务器可以随时的与手机端通信方案分析方法一:轮询频率过高,则太过消耗性能,轮询频率低,则数据显示不及时,不可取...

2018-09-05 19:00:48 2759

原创 关于Android注解框架的深入理解

注解的分类运行时注解编译时注解运行时注解是通过反射来实现的,这种方式的效率会受到一定的影响,因此现在大多数的开源注解框架都是采用编译时注解的方式实现的,这种方式是在编译的时候生成所需的代码,不会影响运行的效率,下面会通过仿照ButterKnife的框架来分别对这两种注解方式作出相应解释运行时注解@interface定义两个注解:BindView、OnClick@Targe...

2018-08-27 11:19:43 1119

原创 Android源码看设计模式(二十)--------------------其余模式简介

原型模式定义:用原型示例指定创建对象的种类,并通过拷贝这些原型创建新的对象使用场景类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等,通过原型拷贝避免这些消耗通过new产生的一个对象需要非常繁琐的数据准备或者权限,这时可以使用原型模式一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用,即保护性拷贝...

2018-08-12 10:45:11 155

原创 Android源码看设计模式(十九)--------关于模板模式的相关分析

模板模式定义:定义一个操作中的算法的框架,将一些步骤在子类中实现,使得子类可以比改变一个算法的结构即可以冲定义该算法中的某些特定步骤使用场景多个子类有公有的方法,并且逻辑基本相同重要、复杂的算法,可以将核心算法设计为模板方法,周边的相关细节则由各个子类实现重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函数约束其行为模板模式的写法UM...

2018-08-12 10:44:20 165

原创 Android源码看设计模式(十八)--------关于策略模式的动画时间插值器相关分析

策略模式定义:策略模式定义了一系列算法,并将每一个算法封装起来,而且使他们还可以相互转换。策略模式让算法独立于使用它的客户端而独立变化实用场景针对同一类型问题的多种处理方式,仅仅是具体行为有差别时需要安全的封装多种同一类型的操作时出现同一抽象类有多个子类时,而又需要使用条件分支语句来选择具体子类时状态模式的写法UML图如下: Context:用来操作策略模式...

2018-08-11 23:05:20 223

原创 Android源码看设计模式(十七)--------关于状态模式的相关分析

状态模式定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来好像是改变了其类。状态模式中的行为是由状态决定的,不同的状态下是有不同的行为的,状态模式的行为是平行的、不可替换的。状态模式把对象的行为包装在不同的状态对象里,每一个状态对象都有一个共同的抽象状态基类。状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变实用场景一个对象的行为取决于它的状态,并且它...

2018-08-07 19:40:41 148

原创 Android源码看设计模式(十六)--------关于责任链模式的Okhttp中拦截器分析

责任链模式定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链去传递该请求,直到有对象处理它为止使用场景多个对象可以处理同一个请求,但具体由那个对象处理则在运行时动态决定在请求处理者不明确的情况下向多个对象中的一个提交一个请求需要动态的指定一组对象处理请求责任链模式的写法UML图如下: Abs...

2018-08-03 18:46:56 326

原创 Android源码看设计模式(十五)--------关于备忘录模式的onSaveInstanceState方法分析

备忘录模式定义:在不破坏封闭的前提下,捕捉一个对象的内部状态,便在该对象之外保存这个状态,这个,之后就可以将该对象恢复到原先保存的状态使用场景需要保存一个对象在某一个时刻的状态或者部分状态如果用一个接口来让其他对象得到这些状态,将会暴露对象的实现细节并且破坏对象的封装性,一个对象不希望外界直接访问其内部状态,通过中间对象可以间接的访问其内部状态备忘录模式的写法UM...

2018-08-02 19:19:32 309

原创 Android源码看设计模式(十四)--------关于访问者模式相关分析

访问者模式定义:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。使用场景对象结构比较稳定,但是需要经常在此对象结构上定义新的操作需要对一个对象结构中的对象进行很多不同的并且不相关的操作,但是不希望增加新的操作的时候修改这些类访问者模式的写法UML图如下: Visitor:抽象访问者,为对象结构中...

2018-08-02 10:37:22 147

原创 Android源码看设计模式(十三)--------关于中介者模式的锁屏功能的相关分析

中介者模式定义:中介者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使它们可以松散耦合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。中介者模式将多对多的相互作用转化为一对多的相互作用。中介者模式将对象的行为和协作抽象化。使用场景当对象之间的交互操作很多且每个对象的行为操作都依赖彼此时,为防止在修改一个...

2018-07-31 16:20:06 185

原创 Android源码看设计模式(十二)--------关于观察者模式的Rxjava的相关分析

观察者模式定义:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并且被自动更新使用场景关联行为场景,注意不是“组合”关系事件多级触发场景跨系统的消息交换场景,如消息队列、事件总线的处理机制观察者模式的写法UML图如下: Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主...

2018-07-30 15:48:12 185

原创 Android源码看设计模式(十一)--------关于代理模式的AndroidManagerProxy的相关分析

代理模式定义:为其他对象提供一种代理以控制对这个对象的访问使用场景当无法或者不想直接访问某个对象或者访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的借口代理模式的写法代理模式UML结构图: Subject:抽象主题类,声明真实主题与代理的共同接口方法。RealSubject:真实主题类,定义...

2018-07-26 12:10:30 162

原创 Android错误集合

Android Studio真机运行项目时一直是Error Installing APK,解决办法如下:1、点击右上角 Gradle,直到点击到如下图所示位置,即build,之后点击左上角刷新按钮,之后重新编译运行 ...

2018-07-25 15:05:45 291

原创 Android源码看设计模式(十)--------关于享元模式的Handler相关分析

享元模式定义:使用共享对象可以有效的支持大量的细粒度的对象应用场景系统中存在大量的相似对象细粒度的对象都具备比较接近的外部状态,而内部状态与环境无关,也就是说对象没有特定身份需要缓冲池的场景享元模式的写法UML图如下: Flyweight:享元对象抽象基类或者接口ConcreteFlyweight:具体的享元对象FlyweightFactory:享元...

2018-07-24 11:02:59 1094

原创 Android源码看设计模式(九)--------关于组合模式的View和ViewGroup的相关分析

组合模式定义:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性使用场景表示对象的部分-整体层次的结构时从一个整体中能够独立出部分模块或者功能的场景组合模式的写法组合模式分为两种:安全型组合模式、透明型组合模式 安全性组合模式UML图如下: 透明型组合模式UML图如下: Component:抽象节点...

2018-07-20 14:16:12 568

原创 Android源码看设计模式(八)--------关于装饰模式startActivity的相关分析

装饰模式定义:不改变类文件和继承的情况下,动态的为对象添加额外的职责使用场景在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责需要动态的给一个对象添加额外的功能,这些功能可以动态的撤销当不能采用集成的方式对系统进行扩充或者采用集成不利于系统扩展和维护装饰模式的写法UML图如下: Component:抽象组件,给对象动态的添加职责。Conc...

2018-07-18 18:08:19 230

原创 Android源码看设计模式(七)--------关于桥接模式的相关分析

桥接模式定义:将抽象部分和实现部分分离,使他们都可以独立的进行变化使用场景任何多维度变化类或者多个树状类之间的耦合都可以使用桥接模式来实现耦合。如果一个系统需要在构建的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,可以通过桥接模式使它们在抽象层建立一个关联联系。对于不希望使用继承或者因为多层次的继承导致系统类的个数急剧增加的系统,也可使...

2018-07-17 14:45:12 215

原创 Android源码看设计模式(六)--------关于适配器模式ListView的相关分析

适配器模式定义:适配器模式把一个类的接口转换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能在一起工作使用场景1、系统需要使用现在的类,而此类的借口不符合系统的需要,即接口不兼容 2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括可能将来引进的类一起工作 3、需要一个统一的输出接口,而输入端的类型不可预知...

2018-07-16 18:59:30 668

原创 Android源码看设计模式(五)--------基于创建者模式的Glide相关分析

创建者模式概念: 建造者模式(builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示通俗的来说,所谓创建者模式,就是客户端不必知道产品内部的组成的细节,而且具体的创建者之间是独立的,容易扩展。主要应用场景是当产品有很多的组成部件可以设置,但是我们在使用的时候可以只设置其中一部分,此时就可以使用创建者模式,比如AlertDialog的使用创建...

2018-07-13 14:02:08 1313

原创 Android源码看设计模式(四)--------基于抽象工厂方法模式的MediaPlayer相关分析

抽象工厂方法模式定义:为创建一组相关或者是相互依赖的对象提供一个接口,而不需要指定它们的具体类应用场景对象族有相同的规范或者说是约束抽象工厂方法写法UML图如下: AbstractFactory:抽象工厂,它声明了用来创建不同产品的方法。ConcreteFactory:具体工厂,实现抽象工厂中定义的创建产品的方法。AbstractProduct:抽象产品,为每种...

2018-07-13 13:49:59 258

原创 Android源码看设计模式(三)--------基于工厂模式的Executors相关分析

工厂模式定义:定义一个创建对象的借口,让子类决定实例化哪个类使用场景需要生成复杂对象的就可以使用工厂模式,简单对象直接new即可工厂模式写法UML图如下: 实例来源:http://liuwangshu.cn/designpatterns/10-factorymethod.html 所需者有四种角色: - 抽象产品类:Computer - 具体产品类:Le...

2018-07-12 23:09:00 253

原创 Android源码看设计模式(二)--------基于单例模式的Context相关分析

单例模式定义:确保一个类中只有一个实例,并且自行实例化向整个系统提供这个实例使用场景适用于所创建的对象过于消耗资源,如访问IO、数据库等资源时,可使用单例模式,确保该类只有一个实例。如ImageLoader,其中包含线程池、缓存系统、网络请求等,很消耗资源,这种不能自由构造对象的情况,就是单例模式的使用场景单例模式的写法1、饿汉模式public class Single...

2018-07-10 16:50:18 718

原创 Android源码看设计模式(一)--------------------设计模式总纲

承接上文我们在在OkHttp源码分析(一)中分析过getResponseWithInterceptorChain()方法源码,其中设置了各种截获器,总结起来如下图所示: 源码分析第一个interceptors是我们自定义的截获器,此处不再多说,直接从下面开始分析 RetryAndFollowUpInterceptor:失败重试及重定向时使用...

2018-07-09 22:47:25 183

原创 OkHttp源码分析(三)-----------------截获器

承接上文我们在在OkHttp源码分析(一)中分析过getResponseWithInterceptorChain()方法源码,其中设置了各种截获器,总结起来如下图所示: 源码分析第一个interceptors是我们自定义的截获器,此处不再多说,直接从下面开始分析 RetryAndFollowUpInterceptor:失败重试及重定向时使用...

2018-06-23 15:31:24 255

原创 OkHttp源码分析(二)-----------------分发器Dispatcher

Dispatcher简介分发器,又称为调度器,是OkHttp中核心的一个类,维护着所有请求的状态,并且在类中维护一个线程池,用来执行请求,关于其在OkHttp中的应用可参见。。。Dispatcher成员变量public final class Dispatcher { //最大并发请求数 private int maxRequests = 64; //每个主机最大...

2018-06-21 22:40:55 208

原创 OkHttp源码分析(一)-----------------整体流程

OkHttp简介

2018-06-21 18:53:05 323

原创 Retrofit使用相关介绍

Retrofit简介Retrofit是基于RESTful的HTTP网络请求框架的封装,其工作本质是OKHttp完成,在服务端返回数据之后,OkHttp将原始的结果交给Retrofit进行解析代码简洁,易与其他框架联合使用,性能最好,处理最快高度封装导致扩展性差,服务器不能给出统一的API的形式,将很难进行处理Retrofit使用步骤添加Retrofit库依赖创建接收服务...

2018-06-07 19:41:57 181

原创 Android中内存泄漏的相关因素分析(三)

Service的因素Service简介Service作为Android中的四大组件之一,若是Local Service,那么对应的Service是运行在主进程的main线程中的,如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上,所以Service和线程是没有任何关系的。Service的具体用法可参见Service使用相关总结为什么使...

2018-05-25 15:12:08 196

原创 Service的使用相关总结

Service的生命周期

2018-05-24 14:52:10 604

原创 Exception和Error的相关分析

Exception和Error继承关系图我们可以看到Exception和Error都是继承自Throwable,在Java中只有Throwable类型的实例才可以被抛出(Throw)或者捕获(catch),它是异常处理机制的基本组成类型,体现了Java平台的设计者对不同异常情况的分类。Exception:Exception是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进...

2018-05-22 00:16:35 303

原创 Android中内存泄漏的相关因素分析(二)

Context因素由于Context的原因,使得本来应该被释放的资源因为被持有所以无法回收,其中最典型的就是应用在单例中,我们知道单例的静态特性使得其生命周期和应用的生命周期一样长,因此不合理的使用,很容易造成内存泄漏。分析单例的特性,我们可以看到,单例的内部有公共的静态方法,用于返回该类内部创建的静态实例。所以在这里所讲的单例的实质其实就是静态变量所造成的内存泄漏。 “单例的静态特性使得其...

2018-05-21 10:21:41 139

原创 Android中内存泄漏的相关因素分析(一)

前言内存泄漏是由于程序所占用的内存没有及时收回所造成,这是应用程序中很常见的问题,而造成泄漏的因素也很多,在这篇文章中会对这些因素做详细的分析非静态的内部类因素非静态内部类包括:成员内部类、局部内部类、匿名内部类。这些内部类会持有外部类的引用。在此内部类中做耗时操作,并频繁的退出重启相关的界面很容易造成内存泄漏。那我们首先来了解一下这几种内部类的区别吧。成员内部类//成...

2018-05-19 17:02:45 129

原创 Android中GC机制的相关分析

前言我们知道在Android开发中,由于有垃圾回收机制,所以我们不用花费太多的心思在内存分配或释放上,但是这不是说我们要完全忽略。我们知道系统分配给每个应用程序的内存是有限的,这个内存的上限叫做“堆大小”(Heap Size),不同的手机,所分配的大小也不相同,但是总是有一个限度的,在开发应用程序的时候所使用的内存是不能超过这个限制的,一旦超过,就会产生OutOfMemory,因此在做缓存的时...

2018-05-10 14:49:14 4252

原创 Fragment使用相关总结

1、Fragment使用方式 》静态加载 》动态加载静态加载 静态加载就是,在程序初始化的时候加载对应的Fragment,在运行过程中不能变化,其使用方法如下://第一个Fragment public class FirstFragment extends Fragment { @Nullable @Override public...

2018-05-08 14:05:57 241

原创 Intent使用相关

1、Intent的分类 > 显式意图 > 隐式意图》显示意图的使用//所谓显式意图,即是可以看得见跳转的对象的Intent,例如Intent intent = new Intent(MaintActivity.this,SecondActivity.class)// 其中要跳转的界面SecondActivity是明明可见的,所谓“显式"其意在此,在实际中开发...

2018-05-04 16:45:04 214

原创 Fragment生命周期及相关方法简介

Fragment生命周期及相关方法简介1、Activity与Fragment生命周期对比2、生命周期相关方法介绍 onAttach() public void onAttach(Context context) { mCalled = true; final Activity hostActivity = mHost == n...

2018-05-03 14:43:23 374

原创 集成环信相关问题

集成环信方式 1. 集成环信sdk需要自己写UI界面及实现各种相关的消息发送、回调、监听等 2. 集成EaseUI库,此种方式不需要自己写UI布局,其中封装了常用的功能第一种方式常见问题解决 1. debug模式下显示消息发送成功,但是消息回调方法onMessageReceived不执行 解决方法:查看在此activity中是否注册消息:@Overri

2018-01-31 17:25:01 236

原创 Android 异常捕捉

Android异常捕捉并写入文本应用场景 开发的软件应用在实际的场景中不可避免的出现各种问题,但是开发人员不能在现场实时调试,远程不能在现该场景,以至于 无法解决该问题,最好的解决方法是集成腾讯的移动分析,可以实时的监控用户的每一步操作,出现问题的地方,但是若是软件 应用在内网环境下这种方法是没有效果的,因此可采用捕捉异常并将其写入文本,调试时可依据此文本调试代码/*

2018-01-16 10:25:37 200

原创 EventBus基本使用和分析

EventBus基本使用EventBus介绍EventBus使用步骤EventBus源码解析EventBus介绍项目中往往需要应用程序内各组件间、组件与后台线程间的通信。比如耗时操作,等耗时操作完成后通过Handler或Broadcast将结果通知给UI,N个Activity之间需要通过Listener通信,其实这些都可以通过EventBus轻松实现,EventBus通过发

2018-01-15 19:24:44 182

Geo++ RINEX Logger_2.1.6.zip

Android API记录您的设备的原始GNSS测量数据到一个RINEX文件中,包括伪距,载波相位,多普勒频率和噪声值等

2021-10-09

openssl_ssleay32_libeay32.zip

openssl缺少的ssleay32.lib和libeay32.lib 包含x64、x86

2021-08-25

Android全局捕捉异常并写入日志

Android程序在实际应用中出现错误,但是无法现场调试,可采用此方法,将错误信息保存成文本,就可以知道错误的原因,再现错误场景

2018-01-16

空空如也

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

TA关注的人

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