关闭

[置顶] Volley源码解析使用方式和使用场景分析

Volley是Google在2013年推出的一个网络库,用于解决复杂网络环境下网络请求问题。刚推出的时候是非常火的,现在该项目的变动已经很少了。项目库地址为 https://android.googlesource.com/platform/frameworks/volley 通过提交历史可以看到,最后一次修改距离今天已经有一段时间了。而volley包的release版本也已经很久没有更新了。 author Jeff Davidson Sun Mar 13 16:35:59...
阅读(4084) 评论(3)

[置顶] Android 事件总线OTTO使用说明和源码解析

OTTO是Square推出的库,地址:https://github.com/square/otto OTTO基于Guava项目的Android支持库,如果你在Android程序开发的过程中想要不同的组件之间进行有效的通信可以使用这个库。通过otto库可以。 otto的官方介绍 An enhanced Guava-based event bus with emphasis on Android support.Otto is an event bus designed to decouple differen...
阅读(6199) 评论(0)

[置顶] Retrofit2使用方式和源码解析

Retrofit2对Retrofit做了很大改进,做一下详细比对 参考https://inthecheesefactory.com/blog/retrofit-2.0/en 底层okhttp不同 Retrofit 默认使用okhttp Retrofit2 默认使用okhttp3 Service接口定义方式不同 在Retrofit2之前如果定义一个同步的函数,应该这样定义: p...
阅读(11900) 评论(0)

[置顶] Picasso的使用和源码解析

一、基本介绍 picasso是Square公司开源的一个Android图片下载缓存库,github地址https://github.com/square/picasso,可以实现图片下载和缓存功能。 Picassso的特点有: 自动将图像缓存在本地,自带内存和硬盘二级缓存功能 通过图片压缩转换以减少内存消耗 自动处理了ImageView的回收,自动取消不在视野范围内的ImageV...
阅读(7587) 评论(0)

[置顶] EventBus的使用和源码解析

基本介绍 EventBus 是一个 Android 事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递,这里的事件可以理解为消息,本文中统一称为事件。事件传递既可用于 Android 四大组件间通讯,也可以用户异步线程和主线程间通讯等等。EventBus EventBus3.0版本有较大的更新,性能上有很大提升。这里只介绍新版本。 传统的事件传递方式包括:Handler...
阅读(7977) 评论(0)

lambda表达式介绍以及Android Studio引入lambda

一、简介“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包。运算符将表达式分为两部分,左边指定输入参数,右边是lambda的主体。        lambda表达式:...
阅读(3442) 评论(0)

Https简单介绍

一、HTTPS是什么  HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。ht...
阅读(2335) 评论(0)

移动设备无线投屏到电视机

移动设备无线投屏到电视机主要有三种种技术:AirPlay、DLNA与Miracast技术。 DNLA,Digital Living Network Alliance,是索尼、英特尔、微软等发起的一套 PC、移动设备、消费电器之间互联互通的协议。它们的宗旨是“随时随地享受音乐、照片和视频”。 DLNA与苹果的AirPlay功能比较类似,协议也大体相同,他们都可以让你手机中的媒体内容投放到电视屏幕里。不同的是手机上的DLNA 并没有类似Apple TV的AirPlay 的镜像功能,也没有Apple TV 所支持...
阅读(7512) 评论(1)

微信小程序

微信小程序官方文档 https://mp.weixin.qq.com/debug/wxadoc/dev/ 目前是内测阶段,大多数人没有收到内测邀请,无法获取小程序APPID,但是这并不影响我们开发,只是不能在手机上看效果, 只能在开发环境提供的调试器中看效果,访问一些敏感信息API受限。 官方文档内容还是挺全的。 看官方文档完全可以入门。...
阅读(2052) 评论(0)

Android日志的使用技巧

Android系统提供了logcat工具来记录打印log,先来聊一下logcat的使用adb logcat --helpUsage: logcat [options] [filterspecs]options include:  -s              Set default filter to silent.                  Like specifying filter...
阅读(2338) 评论(0)

Android 的String资源格式化方法

很多时候我们感性Google在设计Android时遵守了大量MVC架构方式,可以让写公共代码、美工和具体逻辑开发人员独立出来。有关Android 的资源文件values/strings.xml中如何实现格式化字符串呢? stringdemo hello robert 上面是一段简单的字符串资源文件,没有用到格式化,因为比较简单直接描述了意思,当我们设计一个类似 Delete...
阅读(2221) 评论(0)

Realm使用简单介绍

Realm是一个轻量级的数据库,在Android开发中,它可以替代 SQLite 和 ORM 框架。相比SQLite,Realm更快并且具有很多现代数据库的特性,比如支持JSON,流式api,数据变更通知,以及加密支持。 工程配置 1、在工程根目录的build.gradle中添加dependencies classpath "io.realm:realm-gradle-plugin:1.1.0" 2、在app的build.gradle中添加plugin apply plugin: 'realm-andro...
阅读(5081) 评论(0)

SQLite清空表并将自增列归零

SQL标准中有TRUNCATE TABLE语句,用来清空表的所有内容。但SQLite不支持这个语句。在SQLite中直接使用“DELETE FROM TableName”就可以了。对于大多数DBMS来说,用DELETE不如用TRUNCATE 速度快,因为TRUNCATE 不用访问整个表,不用记录数据的变动。 SQLite虽然不支持TRUNCATE,但它对DELETE做了优化:“When the WHERE is omitted from a DELETE statement and the table be...
阅读(6704) 评论(2)

JAVA并发编程(四)任务的取消与关闭

使用简单标志位保存取消状态 为了保证标志位可靠,标志必须为volatile类型。 使用标志位来取消任务是不及时的,如果中间调用了阻塞方法,有可能永远都无法结束。 每个线程都有一个boolean类型的中断状态,interrupt方法能中断目标线程,而isInterrupted方法能返回目标线程的中断状态,静态的interrupted方法将清除当前线程的中断状态,也是清除中断状态的唯一一个方法。 在线上Java程序中经常遇到进程程挂掉,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的...
阅读(3650) 评论(0)

算法系列(十三)图论基本概念和拓扑排序

图的定义 一个图G=(V,E),由定点的集合V,和边的集合E组成。每一条边都是一副点对(v,w),边也称作弧,边上可以有权值。如果点对是有序的,那么图就是有向的。 图中的一条路径是一个顶点序列w1,w2,w3......wN,如果图中包含一条从顶点到自身的边,那么这个路径就是环。 有向无环图也成为DAG 如果在一个无向图中每个顶点到其它顶点都存在路径,则称这个无向图是连通的。具有这样性质的...
阅读(3172) 评论(0)

JAVA并发编程(三)设计线程安全的类

设计线程安全类的过程中需要注意三个基本要素: 1、找出构成对象的所有变量 2、找出约束状态变量的不变性条件 3、建立对象状态的并发访问管理策略 Java5.0提供了多种并发容器来改进同步容器的性能。同步容器将所有对容器状态访问都串行化,以实现它们的线程安全,这种方法的代价是严重降低了并发性。当多个线程竞争容器锁时,吞吐量将严重降低。 通过并发容器代替同步容器,可以极大的提高伸缩性,降低风险。...
阅读(6263) 评论(0)

Android中View绘制流程分析

在Activity的attach方法中通过调用PolicyManager.makeNewWindo创建Window,将一个View add到WindowManager时,WindowManagerImpl创建一个ViewRoot来管理该窗口的根View。并通过ViewRoot.setView方法把该View传给ViewRoot。 Activity中的Window对象帮我们创建了一个PhoneWindow内部类DecorView(父类为FrameLayout)窗口顶层视图。 WindowManagerImpl...
阅读(2765) 评论(0)

算法系列(十二)散列

Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 标准库中包括Set和Map的散列实现,即HashSet类和HashMap类。HashSet的实现直接借助了HashMap。JDK中是使用...
阅读(2202) 评论(0)

JAVA并发编程(二)内置锁和对象共享

Java提供了一种内置的锁机制来支持原子性:同步代码块(Synchronized Block)。内置锁的最小颗粒度是对象,修饰方法上的锁也是作用于对象。有时候叫它方法锁,但是实际上是锁住的对象。 内置锁又被称为监视锁,线程在进入同步代码块之前会自动获得锁,推出时才释放锁,获得内置锁的唯一路径就是进入这个锁保护的同步代码块或者同步方法。 最多只有一个线程可持有这种锁,所以它是线程安全的。当某个线程请求一个其他线程持有的锁时,发出请求的线程就会阻塞。但是如果某个线程视图获得一个已经由自己持有的锁,这是可以得。也...
阅读(2603) 评论(0)

Android不依赖Activity的全局悬浮窗实现

Android悬浮窗实现  实现基础 Android悬浮窗实现使用WindowManager ,WindowManager介绍   通过Context.getSystemService(Context.WINDOW_SERVICE)可以获得 WindowManager对象。 每一个WindowManager对象都和一个特定的 Display绑定。 想要获取一个不同的display的W...
阅读(12055) 评论(0)
131条 共9页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:469805次
    • 积分:5984
    • 等级:
    • 排名:第4461名
    • 原创:117篇
    • 转载:9篇
    • 译文:5篇
    • 评论:64条
    博客专栏
    我的微信公共账号
    关注我的微信公众号,第一时间获得博客的更新提醒,更有很多其它的技术信息分享给大家,扫一扫下方二维码或搜索微信号le_coding即可关注
    文章分类
    最新评论