自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

专栏

Android、java开发者

  • 博客(59)
  • 资源 (2)
  • 收藏
  • 关注

转载 GreenDao源码

简述DaoMaster、具体的Dao 和 DaoSession对象为greedao生成的代码从平时的使用可以看出他们的作用DaoMasterGreenDao的总入口,负责整个库的运行,实现了SqliteOpenHelper DaoSession会话层,操作Dao的具体对象,包括DAO对象的注册 xxEntity实体类,和表内容一一对应 xxDao生成的DAO对象,进行具体的数据库操...

2018-08-06 16:37:06 379

转载 retrofit源码解析

在Android客户端的项目网络请求实践中,对retrofit进行了实践和源码的阅读。从retrofit的用法入手,对retrofit进行解析。首先看一下retrofit的基本用法:第一步创建retrofit对象:Retrofit retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .build(...

2018-08-06 16:36:56 366

原创 Android 性能专题篇 - 内存优化

一、解决所有的内存泄漏1. 单利泄漏 主要原因还是因为一般情况下单例都是全局的,有时候会引用一些实际生命周期比较短的变量,导致其无法释放。例如 :activity 的 context赋值到单利对象里面的成员量变量:private static volatile ClassXX instance; private Context context; pr...

2018-05-22 20:18:07 324

原创 HandlerThread和IntentService

HandlerThreadHandlerThread继承了Thread,它是一种可以使用Handler的Thread,它实现也很简单,就是在run中通过Looper.prepare()来创建消息队列,并且通过Looper.loop()来开启消息循环,这样再实际使用中就允许在HandlerThread中创建Handle了。public class HandlerThread extend...

2018-05-14 17:35:22 630

原创 线程池

1.使用线程池的好处和缺点通过重复利用已创建的线程, 减少在创建和销毁线程上所花的时间以及系统资源的开销。提高响应速度。 当任务到达时, 任务可以不需要等到线程创建就可以立即行。提高线程的可管理性。 使用线程池可以对线程进行统一的分配和监控。如果不使用线程池, 有可能造成系统创建大量线程而导致消耗完系统内存。虽然线程池是构建多线程应用程序的强大机制, 但使用它并不是没有风险的。...

2018-05-14 16:25:26 165

原创 ConstraintLayout使用

一、ConstraintLayout概述ConstraintLayout约束布局和其他布局容器一样,都是继承自ViewGroup的,所以他也拥有其他布局的一些公用属性,与其他布局不同的是他是通过约束规则来实现布局的,所以他还新增了一些他特有的属性(后面再详说),虽然是在Android Studio2.2之后才有这个工具,但是向下兼容到Android版本2.3,官网中对它的描述就一句话:它允许您...

2018-05-12 17:57:13 361

原创 Kotlin---------------可空类型与? ?: ?. !!

Kotlin—————可空类型与? ?: ?. !!

2018-05-10 19:53:17 192

原创 内联函数

使用高阶函数带来了相应的运行时麻烦:每个函数都是一个对象,它捕获闭包,即这些变量可以在函数体内被访问。内存的分配,虚拟调用的运行都会带来开销。但在大多数这种开销是可以通过内联文本函数避免。让Lambda表达式内联进函数使用高阶含少,在运行时会带来一些不利。每个函数都是一个对象,而且它还要捕获一个闭包,也就是在函数体内部访问的那些外层变量。内存占用(函数对象和类都会占用内存)以及虚方法调...

2018-05-07 18:52:25 272

原创 高阶函数和Lambda表达式

高阶函数就是可以接受函数作为参数并返回一个函数的函数。 为高阶函数传递函数类型参数值可以用如下3种方法 1. 直接定义函数,并传递,在函数名前需要加:: 1. 使用Lambda表达式 1. 使用匿名函数// 高阶函数(higher-order function)interface Product{ var area:String fun sell(name:St...

2018-05-07 12:33:46 578

原创 函数

函数函数声明kotlin 中用关键字 fun 声明函数:fun double(x: Int): Int {}函数用法通过传统的方法调用函数// 函数的基本用法fun double(x:Int):Int{ return 2 * x}class MyClass{ fun add(x:Int, y:Int):Int { ...

2018-05-06 17:44:46 429

原创 标准委托

1.惰性加载拉远站是一个函数,接受一个lambda表达式座位参数初始化函数,与前面实现的delegate类似,返回一个Lazy类型的实例,这个实例可以座位委托实现懒加载属性: 第一次调用get的时候,将会执行从lazy函数传入Lambda表达式,然后会记住这次执行的结果,以后所有对get()的调用都只会简单地返回以前记住的结果。// 标准委托:惰性委托(lazy)val lazy...

2018-05-05 17:38:58 217

原创 委托(Delegate)

1. 类的委托委托模式 给实现继承提供了很好的代替方式, Kotlin 在语法上支持这一点,所以并 不需要什么样板代码。 Derived 类可以继承 Base 接口并且指定一个对象代理 它全部的公共方法:// 类的委托// AOP(面向方面编程)interface Base{ fun print()}class BaseImpl(val x:Int):Bas...

2018-05-05 14:35:40 236

原创 对象表达式

有时候我们想要创建一个对当前类有一点小修改的对象,但不想重新声明一个子 类。java 用匿名内部类的概念解决这个问题。Kotlin 用对象表达式和对象声明巧妙 的实现了这一概念。java实现class MyClass{ public String name; public MyClass(String name) { this.name = n...

2018-05-05 11:43:36 547

原创 泛型

1. 泛型基础2. 类型变异3.类型投射(Type Projection)1. 泛型基础像 java 一样,Kotlin 中可以拥有类型参数java实现:class Box<T>{ public T value; public Box(T t) { value = t; }}pu...

2018-05-04 17:03:31 191

原创 封闭类(Sealed Classes)

封闭类(Sealed Classes)用于代表严格的类结构,值只能是有限集合中的某中类型,不可以是任何其 它类型。这就相当于一个枚举类的扩展:枚举值集合的类型是严格限制的,但每个 枚举常量只有一个实例,而密封类的子类可以有包含不同状态的多个实例。 声明密封类需要在 class 前加一个 sealed 修饰符。密封类可以有子类但必须全部嵌 套在密封类声明内部使用封闭类的主要好处是when...

2018-05-04 09:57:12 4382 1

原创 数据类

数据类复制数据类我们经常创建一个只保存数据的类。在这样的类中一些函数只是机械的对它们持有 的数据进行一些推导。在 kotlin 中这样的类称之为 data 类,用 data 标注:data class User(val name: String, val age: Int)编译器会自动根据主构造函数中声明的所有属性添加如下方法: - equ...

2018-05-03 19:46:14 445

原创 扩展

1.扩展原声API2.扩展自定义类3.成员函数冲突的解决方案4. 扩展属性5.扩展的范围6.在类中的扩展1.扩展原声API为了声明一个函数扩展,我们需要在函数前加一个接收者类型作为前缀。下面我们 会为 MutableList 添加一个 swap 函数:// 扩展:为类添加成员函数和属性fun MutableList<Int&gt...

2018-05-03 15:03:08 246

原创 枚举类

1.枚举类基本用法2.枚举类定义变量3.为枚举类指定对应的值4. 匿名类1.枚举类基本用法枚举类最基本的用法就是实现类型安全的枚举enum class Direction {NORTH,SOUTH,WEST}每个自举常量都是一个对象。枚举常量通过逗号分开。2.枚举类定义变量enum class Direction{ ...

2018-05-03 10:59:00 205

转载 GreenDao使用教程

一 Greendao简介二Greendao的使用方法配置初始化GreendaoGreendao操作数据库文件增删改查三多表关联四Greendao注解含义五Greendao特性一、 Greendao简介Greendao是一款用于数据库创建与管理的框架,由于原生SQLite语言比较复杂繁琐,使得不少程序员不得不去学习SQLite原生语言,但是学习成本高,效率低下,所以不少公司致力于开发一

2018-04-27 13:48:38 1040

原创 Kotlin静态方法和静态类

Kotlin静态方法和静态类静态类静态方法Kotlin静态方法和静态类静态类所有方法都为静态方法,如工具类、常量池、等,直接把;类名前的class替换成objectobject Constants1 { val text = "hello world!"}调用Constants1.text静态方法在Kotl...

2018-04-25 17:40:57 5784 2

原创 HTTP详解

HTTP组成HTTP全称是HyperText Transfer Protocal,即:超文本传输协议,从1990年开始就在WWW上广泛应用,是现今在WWW上应用最多的协议, Http是应用层协议,当你上网浏览网页的时候,浏览器和Web服务器之间就会通过HTTP在Internet上进行数据的发送和接收。Http是一个基于请求/响应模式的、无状态的协议。即我们通常所说的Request/Re...

2018-03-27 15:40:41 270

原创 Kotiln类和继承

Kotiln类和继承类(class)构造器主构造函数第二构造函默认参数类成员属性的用法函数嵌套类修饰符(作用域)继承接口Kotiln类和继承类(class)Kotlin中,使用class关键字生命一个类。类声明由类名,类头(指定其类型参数,主构造函数等)和大括号括起来的类体组成。class MyClass publi...

2018-01-14 14:39:30 619

原创 Kotiln控制流

Kotiln控制流

2017-10-15 21:58:21 1015

原创 Kotiln包

源文件的所有内容(比如类和函数)都被包声明包括。因此在上面的例子中,bza()的全名应该是foo.bar.bza,Goo的全名是foo.bar.Goo如果没有指定包名,那这个文件的内容就从属于没有名字的 "default" 包。

2017-10-15 21:18:02 615

原创 Kotlin基本类型

在 Kotlin 中,所有变量的成员方法和属性都是一个对象。一些类型是内建的,它们 的实现是优化过的,但对用户来说它们就像普通的类一样。

2017-10-14 22:03:21 445

原创 Kotlin基本语法

Kotlin基本语法基本语法定义包名定义函数定义局部变量注释使用字符串模板使用条件表达式使用一个返回可空值的函数使用循环代码风格Kotlin基本语法基本语法定义包名在源文件的开头定义包名:package my.demoimport java.util.*定义函数定义一个函数接受两个 int 型参数,返回值为 int :fun sum(a: Int , b: Int) : I

2017-10-14 20:38:04 345

转载 GET请求和POST请求有什么区别?GET请求的参数在URL的问号后面显示,而POST参数不在URL上;POST可以比GET请求更大的数据…一般的回答都是这样。 但是作为一个高端大气上档次的程序

GET请求和POST请求有什么区别?GET请求的参数在URL的问号后面显示,而POST参数不在URL上;POST可以比GET请求更大的数据…一般的回答都是这样。 但是作为一个高端大气上档次的程序员,这样回答就弱爆了。为了搞清楚GET和POST的区别,下面写了一个Java程序来接收HTTP请求。HTTP是基于TCP协议的,所以可以使用Java最底层的Socket实现。

2017-03-21 22:44:47 24674

原创 Fragment生命周期

Fragment生命周期详细解读每个方法的调用场景fragment生命周期解析当一个fragment被创建的时候:当这个fragment对用户可见的时候,它会经历以下状态。可以理解为从创建到显示(或切换)当这个fragment被销毁了(或者持有它的activity被销毁了):就像Activity一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。其他...

2017-03-21 18:54:03 856

原创 AsyncTask源码分析

AsyncTask简介AsyncTask步骤注意事项AsyncTask工作原理解决3.0以上版本不能并行执行的问题AsyncTask简介 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程。 ...

2017-03-20 12:18:05 305

转载 Activity和Fragment生命周期

原文:http://blog.csdn.net/android_tutor/article/details/5772285Activity生命周期先来看张官方说明图详细解读每个方法的调用场景onCreate():当创建启动时调用onStart():当处于可见状态时调用调用场景:Activity启动:onCreate()->onStart()->onResumeonResume ()调用...

2017-03-14 17:25:46 762

转载 单例模式的八种写法比较

单例模式是最常用到的设计模式之一,熟悉设计模式的朋友对单例模式都不会陌生。一般介绍单例模式的书籍都会提到 饿汉式 和 懒汉式 这两种实现方式。但是除了这两种方式,本文还会介绍其他几种实现单例的方式,让我们来一起看看吧。原文链接: http://tianweili.github.io/blog/2015/03/02/singleton-pattern/简介单例模式是一种常用的

2017-03-10 18:01:27 302

转载 Android源码分析-点击事件派发机制

载请出处:http://blog.csdn.net/singwhatiwanna/article/details/17339857概述一直想写篇关于Android事件派发机制的文章,却一直没写,这两天刚好是周末,有时间了,想想写一篇吧,不然总是只停留在会用的层次上但是无法了解其内部机制。我用的是4.4源码,打开看看,挺复杂的,尤其是事件是怎么从Activity派发出来的,太费解了。了解Window...

2017-03-08 17:19:11 324

原创 点击事件传递规律

点击事件的分发过程有三个主要的方法:onTouchEvent:onTouchEvent是在view中定义的一个方法。处理传递到view 的手势事件。手势事件类型包括ACTION_DOWN,ACTION_MOVE,ACTION_UP,ACTION_CANCEL四种事件。一旦onTouchEvent方法被调用,并返回true则这个手势事件就结束了,并不会继续传递到子控件。onInt...

2017-03-07 17:58:02 736

原创 Android View

View基础知识View的位置参数:MotionEvent和TouchSlopVelocityTrackerGestureDetectorView的滑动scrollTo和scrollBy使用动画改变布局参数ScrollerView基础知识View的位置参数: top、left、right、bottom,分别对应View的左上角和右下...

2017-03-07 16:14:39 287

转载 深入理解java String

Java中String是一个特殊的包装类数据有两种创建形式:1. String s = "abc";2. String s = new String("abc");        第一种先在栈中创建一个对String类的对象引用变量s,然后去查找"abc"是否被保存在字符串常量池中,如果没有则在栈中创建三个char型的值'a'、'b'、'c',然后在堆中创建一个String对象object,它的值...

2017-01-16 18:28:39 254

原创 Android根据可显示宽度调整字体大小

 1、实现结果:定义一个字体最大值和字体最小值默认情况下显示最大值,当内容排版空间不足的情况下,调整字体大小 2、分析过程:         可以通过计算指定字体大小的文字计算宽度是否能够排下内容,不能,就减小字体大小 3、attrs添加参数: <attr name="maxTextSize" format="dimension"/> <attr name="minTex...

2017-01-12 16:27:39 6021 2

原创 观察者模式

观察者模式1. 概述  有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。2. 解决的问题  将一个系统分割成一个一些类相互协作的类有一个不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。观察者...

2016-12-17 18:33:03 614

原创 python中的re(正则表达式)

re是python对正则表达式的支持1.re.match作用:尝试从字符串的开始匹配一个模式re.match的函数原型为:re.match(pattern, string, flags)第一个参数是正则表达式,这里为"(\w+)\s",如果匹配成功,则返回一个Match,否则返回一个None;第二个参数表示要匹配的字符串;第三个参数是标致位,用于控制正则表达式的匹配

2016-12-07 15:02:51 468 2

转载 正则表达式

元字符现在你已经知道几个很有用的元字符了,如\b,.,*,还有\d. 正则表达式里还有更多的元字符,比如\s匹配任意的空白 符,包括空格,制表符(Tab),换行符,中文全角空格等。\w匹配字母或数字或下划线或汉字等。对中文/汉字的特殊处理是由.Net提供的正则表达式引擎支持的,其它环境下的具体情况请查看 相关文档。下面来看看更多的例子:\ba\w*\b匹配以字母

2016-12-06 18:38:10 345

原创 Android自定义柱状图,带有标注和左右滑动效果

最近自己改进了一下柱状图的绘制,支持多跟柱子,自己设置颜色,并且添加了手动滑动效果(在屏幕绘制宽度不够时启动滑动),下图是整体效果,下面我分析一下代码:1、设置内容: tagging:标注 xRawData:x轴坐标 yRawData:为柱形图的内容,通过List<Float>... yRawData传入,可以有多个/** * 设置值 tagging:标注 xRawData:x轴坐...

2016-11-18 14:38:15 4506 4

Android自定义柱状图,带有标注和左右滑动效果

最近自己改进了一下柱状图的绘制,支持多跟柱子,自己设置颜色,并且添加了手动滑动效果(在屏幕绘制宽度不够时启动滑动)

2016-11-18

android6.0以后删除HttpClient的解决方法

android6.0以后删除HttpClient的解决方法

2016-04-03

空空如也

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

TA关注的人

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