大菜鸟一号
码龄13年
关注
提问 私信
  • 博客:115,121
    115,121
    总访问量
  • 46
    原创
  • 1,430,199
    排名
  • 12
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2012-03-11
博客简介:

专栏

博客描述:
Android、java开发者
查看详细资料
个人成就
  • 获得26次点赞
  • 内容获得13次评论
  • 获得21次收藏
创作历程
  • 22篇
    2018年
  • 14篇
    2017年
  • 23篇
    2016年
成就勋章
TA的专栏
  • Kotlin
    18篇
  • Android绘图
    2篇
  • Android源码分析
    7篇
  • Android自定义View
    5篇
  • Android事件处理
    7篇
  • Android网络请求
    3篇
  • Android
    30篇
  • java
    8篇
  • 设计模式
    3篇
  • python
    1篇
  • 正则表达式
    1篇
  • Android优化
    1篇
兴趣领域 设置
  • 移动开发
    android studio
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

GreenDao源码

简述DaoMaster、具体的Dao 和 DaoSession对象为greedao生成的代码从平时的使用可以看出他们的作用DaoMasterGreenDao的总入口,负责整个库的运行,实现了SqliteOpenHelper DaoSession会话层,操作Dao的具体对象,包括DAO对象的注册 xxEntity实体类,和表内容一一对应 xxDao生成的DAO对象,进行具体的数据库操...
转载
发布博客 2018.08.06 ·
411 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

retrofit源码解析

在Android客户端的项目网络请求实践中,对retrofit进行了实践和源码的阅读。从retrofit的用法入手,对retrofit进行解析。首先看一下retrofit的基本用法:第一步创建retrofit对象:Retrofit retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .build(...
转载
发布博客 2018.08.06 ·
411 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Android 性能专题篇 - 内存优化

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

HandlerThread和IntentService

HandlerThreadHandlerThread继承了Thread,它是一种可以使用Handler的Thread,它实现也很简单,就是在run中通过Looper.prepare()来创建消息队列,并且通过Looper.loop()来开启消息循环,这样再实际使用中就允许在HandlerThread中创建Handle了。public class HandlerThread extend...
原创
发布博客 2018.05.14 ·
661 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

线程池

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

ConstraintLayout使用

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

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

Kotlin—————可空类型与? ?: ?. !!
原创
发布博客 2018.05.10 ·
222 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

内联函数

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

高阶函数和Lambda表达式

高阶函数就是可以接受函数作为参数并返回一个函数的函数。 为高阶函数传递函数类型参数值可以用如下3种方法 1. 直接定义函数,并传递,在函数名前需要加:: 1. 使用Lambda表达式 1. 使用匿名函数// 高阶函数(higher-order function)interface Product{ var area:String fun sell(name:St...
原创
发布博客 2018.05.07 ·
622 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

函数

函数函数声明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 ·
470 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

标准委托

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

委托(Delegate)

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

对象表达式

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

泛型

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 ·
243 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

封闭类(Sealed Classes)

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

数据类

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

扩展

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

枚举类

1.枚举类基本用法2.枚举类定义变量3.为枚举类指定对应的值4. 匿名类1.枚举类基本用法枚举类最基本的用法就是实现类型安全的枚举enum class Direction {NORTH,SOUTH,WEST}每个自举常量都是一个对象。枚举常量通过逗号分开。2.枚举类定义变量enum class Direction{ ...
原创
发布博客 2018.05.03 ·
244 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

GreenDao使用教程

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

Kotlin静态方法和静态类

Kotlin静态方法和静态类静态类静态方法Kotlin静态方法和静态类静态类所有方法都为静态方法,如工具类、常量池、等,直接把;类名前的class替换成objectobject Constants1 { val text = "hello world!"}调用Constants1.text静态方法在Kotl...
原创
发布博客 2018.04.25 ·
5839 阅读 ·
0 点赞 ·
2 评论 ·
3 收藏
加载更多