- 博客(47)
- 资源 (7)
- 收藏
- 关注
原创 <Java设计模式>---依赖倒置原则(DIP)
什么是依赖倒置原则高层模块不应该依赖底层模块,两者都应该依赖器抽象。抽象不应该依赖细节,细节应该依赖抽象。 个人理解,高层模块和抽象对应Java里面,应该是抽象类、接口,而底层模块和细节对应Java里面,应该就是具体的实现类,放在咱们开发中怎么理解他们之间的依赖关系呢?假如你需要完成一个功能,但是这个功能,不能自己一个类就能完成的,需要其他的类,那么这个时候就需要用到其他的类,那么你依赖的这个
2017-09-20 10:03:51 584
原创 <Java设计模式>---里斯替换原则(LSP)
什么里斯替换原则定义1:如果对每一个类型为S的对象o1,都有类型T的对象o2,在程序P中,使得T定义的o1都能替代成o2,而程序P的行为没有发生变化,那么类型S是类型T的子类型。 定义2:所有应用基类的地方必须能够透明地使用其子类的对象。 2个定义都是可以的,只是第2种读起来比较绕口,第2个比较简洁,个人建议多品一品定义1。里斯替换规则其他类应该依赖父类或接口//学生class Stu
2017-09-19 11:28:11 967
原创 <Java设计模式>---单一职责原则
1. 什么是单一职责原则顾名思义就是一个职责嘛,完整的来说,就是一个接口、类和方法负责的功能是单一的,简单的。2. 生活中的运用其实,咱们生活中,有很多这样的例子,就拿手机厂商造手机来说,为了完成一部手机的制造,需要有生产cpu的、生产显示屏的、生产主板的、生产外壳的、生产麦克风的…各种的机器。那么每一种类型的机器就会生产这一类产品,不会生产其他的产品,这种进行单一产品生产的功能,就是单一职责的具体
2017-09-18 15:31:33 631
原创 OnePush一个可拓展的Android消息推送SDK(使用介绍)
一、为啥会有OnePush消息推送,在国内,要么自己做,要么集成第三方的sdk,现在第三方推送的sdk,有很多可以选择,友盟,极光,小米等,我们在选择消息推送的时候,肯定是需要一个能及时把消息推送给用户的sdk,那么问题来了,很多国产手机厂商都各自根据android修改的UI系统,各种的进程清理,导致消息推送的后台无法存活,特别是小米、华为的手机上,只要用户清理,基本上推送后台服务就死绝了,当然这
2017-05-27 13:48:54 2045
原创 Tinker集成和使用(一)Tinker简介和运行Tinker示例出现的问题
Tinker集成和使用(一)Tinker简介和运行Tinker示例出现的问题Tinker出来有一段时间了,我也是第一时间开始使用这个框架,感觉真的很好用,而且支持动态根性的类型也很多,当然还有它的多平台的兼容性,毕竟是在微信上使用的。 Tinker简介(官方文档)Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。
2016-11-09 14:17:20 14911 4
原创 Markdown语法
点击预览Markdown生成效果# 欢迎使用Markdown编辑器写博客本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦:- **Markdown和扩展Markdown简洁的语法**- **代码块高亮**- **图片链接和图片上传**- ***LaTex*数学公式**- **UML序列图和流程图**- **离线写博客**
2016-11-09 10:30:44 541
原创 Markdown生成效果
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2016-11-09 10:27:19 1596
原创 Json数据结构比对
本文,产生这个需求的原因是,api数据测试的时候需要校验json的数据格式,原来都是人眼去对比的,太折磨人了,作为程序员那就更加不能折磨自己了。 ps:让后台人员添加,后台人员懒得弄,反正折磨又不是他,好吧,那么只有靠自己了。模板json:{ "code": "0", "msg": "ok", "time": "2016-10-13 16:13:48", "data
2016-10-13 17:57:39 4903 2
转载 Android中JS与Java的极简交互库-SimpleJavaJsBridge
前言最近接触android中js与java交互的东西很多,当然它们之间的交互方式有几种,但是我觉得这几种交互方式都存在一定的不足,这是我决定编写SimpleJavaJsBridge这个库的关键原因。我会按以下顺序进行本文章:现有js与java通信方案及不足js与java完美通信方案设计SimpleJavaJsBridge现在进入正题1. 现有js与java通信方案及不足先来说明一点js与ja
2016-10-10 15:29:21 2764
转载 Gradle脚本基础全攻略
【工匠若水 http://blog.csdn.net/yanbober 转载请注明出处。点我开始Android技术交流】1 背景在开始Gradle之前请务必保证自己已经初步了解了Groovy脚本,特别是闭包规则,如果还不了解Groovy则可以先看《Groovy脚本基础全攻略》这一篇博客速成一下Groovy基础,然后再看此文即可。关于Gradle速成干货基础详情也请参考Geadle官方网站,
2016-10-09 14:27:37 1159
转载 Android应用学习记录------通讯录的增,删,改,查
转:http://lichangsong.blog.51cto.com/7997447/1306033最近两天在做通讯录的增删改查功能。原以为Android会将通讯录的所有数据都集合到一个数据库表中,然后知道其ContentProvider提供Uri后,通过ContentResolver的query(),insert(),update(),delete()方法直接操作数据库的数据,
2016-07-25 14:28:14 1454
转载 android.os.BadParcelableException: ClassNotFoundException when unmarshalling
本文主要分析android.os.BadParcelableException: ClassNotFoundException when unmarshalling这个异常的原因及解决方法,解释了android的class loader. 一、现象:应用打开,home键到后台,过一段时间打开,偶现fc,log如下:123E/AndroidRuntime(9085):
2016-05-12 00:49:20 1591
原创 Looper、Handler在子线程中的应用
Looper类:为一个线程开启一个消息循环,里面有一个消息队列,新线程是没有开启消息循环的,所以需要用到Looper的方法创建消息循环(主线程除外,主线程会自动为其创建Looper对象,开启消息循环),MessageQueue存放消息和事件 Handler类:辅助类,向绑定的Looper投递消息 Looper原型:Looper.prepare()Lo
2016-04-28 16:45:01 2273
转载 Android拓展系列(12)--使用Gradle发布aar项目到JCenter仓库
目的发布自己的android library(也就是aar)到公共的jcenter仓库,所有的人都能用gradle最简单的方式引用。为什么选择jcenter,它兼容maven,而且支持更多形式仓库,android studio最新版本已经默认jcenter了。环境Android Studio 1.0+参考文章使用Gradle发布Android开源项目到J
2016-04-18 17:30:35 745
转载 Android Studio 如何打JAR包
在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用。 在AS中可以通过修改gradle才处理。 我们新建一个项目MakeJar,在项目中新建一个modle-类型为library 如图:app为我们的主工程,librarydemo是我们要将其生成jar包的model. 在librarydemo中加入如下代码:task makeJar(type:
2016-04-18 17:07:47 637
转载 Android DiskLruCache 源码解析 硬盘缓存的绝佳方案
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/47251585; 一、概述依旧是整理东西,所以近期的博客涉及的东西可能会比较老一点,会分析一些经典的框架,我觉得可能也是每个优秀的开发者必须掌握的东西;那么对于Disk Cache,DiskLruCache可以算佼佼者了,所以我们就来分析下其源码实
2016-02-28 20:41:51 790
转载 Android 那些你所不知道的Bitmap对象详解
转:http://blog.csdn.net/xiaanming/article/details/41084843我们知道Android系统分配给每个应用程序的内存是有限的,Bitmap作为消耗内存大户,我们对Bitmap的管理稍有不当就可能引发OutOfMemoryError,而Bitmap对象在不同的Android版本中存在一些差异,今天就给大家介绍下这些差异,并提供一些在
2016-02-28 20:31:28 618
转载 android跨进程通信(IPC):使用AIDL
AIDL的作用AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码。如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参数。AI
2016-02-28 20:18:02 759
转载 Android下Affinities和Task
本文参考了官方Dev Guide文档,简单介绍Android下的affinities和任务(task)。1、Activity和Tasktask就好像是能包含很多activity的栈。 默认情况下,一个activity启动另外一个activity时,两个activity是放在同一个task栈中的,第二个activity压入第一个activity所在的task栈。当用户按下返回键时
2016-02-28 20:14:46 596
转载 Android技术积累:开发规范
上个月发布了Android项目重构的三篇系列文章,其中,界面篇中提到了在项目中保持规范性的重要性,也有简单举了几个例子。这篇文章则将其延伸,提供更完整的开发规范说明。书写规范1. 编码方式统一用UTF-8. Android Studio默认已是UTF-8,只要不去改动它就可以了。2. 缩进统一为4个空格,将Tab size设置为4则可以保证tab键按4个空格
2016-02-28 19:53:01 599
转载 【构建Android缓存模块】(一)吐槽与原理分析
摘要在我翻译的 Google 官方系列教程中,Bitmap 系列由浅入深地介绍了如何正确的解码 Bitmap ,异步线程操作以及使用 Fragments 重用等技术,并且在最后给出了非常强大的独家秘笈:BitmapFun ,让猿媛们得以一窥究竟 Google 的攻城师们是如何高屋建瓴地秒杀 OOM 的。前言在下载到 BitmapFun.rar 这个神圣的压缩包以后,我是
2016-02-21 22:16:35 194
转载 Android大图片裁剪终极解决方案(中:从相册截图)
在这篇博客中,我将向大家展示如何从相册截图。上一篇博客中,我就拍照截图这一需求进行了详细的分析,试图让大家了解 Android 本身的限制,以及我们应当采取的实现方案。根据我们的分析与总结,图片的来源有拍照和相册,而可采取的操作有使用Bitmap并返回数据使用Uri不返回数据前面我们了解到,使用Bitmap有可能会导致图片过大,而不能返回实际大小的图片,我将采用
2016-02-21 22:09:32 1013
转载 Android大图片裁剪终极解决方案(下:拍照截图)
上一篇博客中,我们学习到了如何使用Android相册截图。在这篇博客中,我将向大家展示如何拍照截图。拍照截图有点儿特殊,要知道,现在的Android智能手机的摄像头都是几百万的像素,拍出来的图片都是非常大的。因此,我们不能像对待相册截图一样使用Bitmap小图,无论大图小图都统一使用Uri进行操作。一、首先准备好需要使用到的Uri:12pri
2016-02-21 22:07:57 158
转载 Android大图片裁剪终极解决方案(上:原理分析)
转http://ryanhoo.github.io/blog/2014/05/26/the-ultimate-approach-to-crop-photos-on-android-1/约几个月前,我正为公司的APP在Android手机上实现拍照截图而烦恼不已。上网搜索,确实有不少的例子,大多都是抄来抄去,而且水平多半处于demo的样子,可以用来讲解知识点,但是一碰到实际项目,就漏洞
2016-02-21 22:03:09 538
原创 Git使用小结
git提交工程到github1、github创建repository2、配置git.exe 路径和github的账号和密码3、打开git bash 找到自己工程目录4、输入命令进行关联 git remote add origin http://.......git 地址链接5、右键工程目录Git -->Add Git
2016-02-15 11:09:08 498
转载 EventBus源码研读(下)
post()方法调用流程我们继续来看EventBus类,的另一个入口方法post()//已省略部分代码public void post(Object event) { PostingThreadState postingState = currentPostingThreadState.get(); ListObject> eventQueue = posting
2016-02-14 19:33:28 508
转载 EventBus源码研读(中)
Subscribe流程我们继续来看EventBus类,分析完了包含的属性,接下来我们看入口方法register()通过查看源码我们发现,所有的register()方法,最后都会直接或者间接的调用register()方法/** * @param subscriber 订阅者对象 * @param sticky 是否粘滞 * @param priority 优
2016-02-14 19:32:17 408
转载 EventBus源码研读(上)
基础用法在读代码之前,首先你得了解它的基本用法.如果你已经能够很熟练的使用EventBus等事件总线库了,那么你可以跳过本节.首先引入依赖包,查看GitHub主页的说明:https://github.com/greenrobot/EventBus在Gradle文件加入 compile 'de.greenrobot:eventbus:2.4.0'用法与广播相同,且比广播更
2016-02-14 19:30:45 617
转载 Android深入讲解WebView——下
版权声明:本文原创,转载请注明来自开源实验室 http://www.kymjs.com/摘要作为Android开发者,我们都知道在手机中内置了一款高性能 webkit 内核浏览器,在 SDK 中封装为一个叫做 WebView 组件。今天就为大家讲讲Android中WebView的详细使用方法 判断 WebView 是否已经滚动到页面底端
2016-02-14 19:25:58 873
转载 Android深入理解WebView——上
版权声明:本文原创,转载请注明来自开源实验室 http://www.kymjs.com/目录(?)[+]摘要作为Android开发者,我们都知道在手机中内置了一款高性能 webkit 内核浏览器,在 SDK 中封装为一个叫做 WebView 组件。今天就为大家讲讲Android中WebView的详细使用方法 本文原创,转载请注明地址:h
2016-02-14 19:18:50 750
翻译 Android应用架构
转:http://www.jianshu.com/p/8ca27934c6e6Android开发生态圈的节奏非常之快。每周都会有新的工具诞生,类库的更新,博客的发表以及技术探讨。如果你外出度假一个月,当你回来的时候可能已经发布了新版本的Support Library或者Play Services我与Ribot Team一起做Android应用已经超过三年了。这段时间,我们所构建的A
2016-02-06 22:48:23 515
原创 <Java设计模式>—抽象工厂模式
设计模式>—抽象工厂模式抽象工厂的定义其实和工厂方法模式定义差不多,具体的可以去看看工厂方法模式,下面主要说说区别: 从UML类图上面观察,抽象工厂和工厂方法主要的区别就是生产的产品了,抽象工厂生产了一系列的产品,而工厂方法只是简单的生产了一个产品,打个比方,就应该比较好理解了。抽象工厂,我们就把它比方成电脑生产的厂家,电脑其实一个很多零件组成的,显示器、键盘、电池、主板…(组件
2016-02-06 22:00:24 643
原创 <Java设计模式>—工厂方法模式
设计模式>—工厂方法模式工厂方法模式是简单工厂模式的进一步抽象化和推广,工厂方法模式里不再只由一个工厂类决定那一个产品类应当被实例化,这个决定被交给抽象工厂的子类去做。 来看下它的组成: 1)抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。 2)具体工厂
2016-02-06 00:11:17 611
原创 <Java设计模式>—简单工厂模式
—简单工厂模式简单工厂模式又称静态工厂方法模式。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化,如同一个交通警察站在来往的车辆流中,决定放行那一个方向的车辆向那一个方向流动一样。 先来看看它的组成: 1)
2016-02-04 21:57:03 821
转载 <Java设计模式>—UML类图
个人感觉总结很好的UML类图,转自http://blog.csdn.net/u013467442/article/details/41808501UML类图几种关系的总结在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Compo
2016-02-01 21:19:03 5128
原创 Android源码中final关键字的用法
这跟性能没关系,我来告诉大家吧!第一步:将全局变量赋给一个局部变量: 只是为了取得 在程序运行过程中,该全局变量的当前时刻的值!但这样是不够的!因为设置 变量local=global,在JAVA里只是将局部的一个引用指向这个全局变量,当全局变量发生改变时,引用它的这个局部变量值会随之改变,倘若局部变量在这个局部代码块里正在运行,又中途被改变了,这会发生多么严重的错误!
2016-01-03 22:37:24 6060
转载 用MVP架构开发Android应用
转载地址:http://kymjs.com/code/2015/11/09/01 怎样从架构级别去搭建一个APP,怎样让他应对日益更改的界面与业务逻辑? 今天为大家讲述一种在Android上实现MVP模式的方法。也是我从新项目中总结出来的一种新的架构模式,大家可以查看我的TheMVP项目:https://github.com/kymjs/TheMVP为什么需要MVP
2015-12-14 10:43:16 1181
转载 如何正确获得Android内外SD卡路径
如何正确获得Android内外SD卡路径原文路径:http://blog.fidroid.com/post/android/ru-he-zheng-que-huo-de-androidnei-wai-sdqia-lu-jing外置sd卡路径,也许很多同学在平时的工作中并不会用到,因为现在很多机型都不支持外置sd卡(这也是Google目标),所以并不用考虑外置sd卡的路径问题。除了开发文
2015-12-07 15:30:07 4127
原创 Serializable中的serialVersionUID到底有啥用
最近在研究跨进程通信的问题,于是又再一次研究了,我们熟悉而又陌生的Serializable接口。那么好,做过Java开发的朋友肯定对这个接口不陌生吧,Java中就是通过这个接口,来实现了序列化和反序列化的,那么下面看看使用Serializable接口的小例子。public class User implements Serializable{ private String n
2015-11-21 21:46:57 8444
原创 svn: E155019: Can't upgrade as it is not a pre-1.7 work解决办法
最近遇到SVN老是报 svn: E155019: Can't upgrade as it is not a pre-1.7 work的错,在网上也查了资料,有的资料也不完整,所以就把自己解决的步骤分享下。第一步:把『SVN接口』设定为『JavaHL(JNI) Not Available』第二步:Team--->Refresh/Cleanup第三步:Team--->Upgr
2015-10-26 21:41:32 11649 4
(人声)您有新订单请及时处理--软件测试使用
2017-01-03
夜间、保护眼睛
2015-08-02
drawableTop设定大小RadioButton和Button类库和示例
2015-07-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人