自定义博客皮肤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开发笔记

android开发笔记

  • 博客(38)
  • 资源 (14)
  • 收藏
  • 关注

转载 Rxjava2入门教程六:Single、Completable、Maybe——简化版的Observable

在Rxjava2中,Observale和Flowable都是用来发射数据流的,但是,我们在实际应用中,很多时候,需要发射的数据并不是数据流的形式,而只是一条单一的数据,或者一条完成通知,或者一条错误通知。在这种情况下,我们再使用Observable或者Flowable就显得有点大材小用,于是,为了满足这种单一数据或通知的使用场景,便出现了Observable的简化版——Single、Complet...

2019-03-03 17:53:50 502

转载 Rxjava2入门教程五:Flowable背压支持——对Flowable最全面而详细的讲解

背压(backpressure)当上下游在不同的线程中,通过Observable发射,处理,响应数据流时,如果上游发射数据的速度快于下游接收处理数据的速度,这样对于那些没来得及处理的数据就会造成积压,这些数据既不会丢失,也不会被垃圾回收机制回收,而是存放在一个异步缓存池中,如果缓存池中的数据一直得不到处理,越积越多,最后就会造成内存溢出,这便是响应式编程中的背压(backpressure)问题...

2019-03-03 17:52:50 953

转载 Rxjava2入门教程四:Scheduler线程调度器

Scheduler(线程调度器)赋予RxJava简洁明了的异步操作,可以说是RxJava中最值得称道的地方。在之前的代码中,Observable发射数据流,Observer接收响应数据流,以及Operators加工数据流均是在同一个线程中,实现出来的是一个同步的函数响应式。但是函数响应式的实际应用却不是这样的,大部分都是后台处理,前台响应的一个过程。Observable生成发射数据流,以及Ope...

2019-03-03 17:51:26 590

转载 Rxjava2入门教程三:Operators操作符

Operators操作符操作符(Operators):其实质是函数式编程中的高阶函数,是对响应式编程的各个过程拆分封装后的产物。以便于我们操作数据流。按照其作用具体可分为以下几类:创建:创建一个可观察对象Observable并发射数据过滤:从Observable发射的数据中取出特定的值变换:对Observable发射的数据执行变换操作组合:组合多个Observable,例如:{1,2...

2019-03-03 17:50:28 207

转载 Rxjava2入门教程二:Observable与Observer响应式编程在Rxjava2中的典型实现

如需下载源码,请访问https://github.com/fengchuanfang/Rxjava2Tutorial在RxJava中,函数响应式编程具体表现为一个观察者(Observer)订阅一个可观察对象(Observable),通过创建可观察对象发射数据流,经过一系列操作符(Operators)加工处理和线程调度器(Scheduler)在不同线程间的转发,最后由观察者接受并做出响应的...

2019-03-03 17:49:31 232

转载 Rxjava2入门教程一:函数响应式编程及概述

如需下载源码,请访问https://github.com/fengchuanfang/Rxjava2TutorialRxJava是函数响应式编程思想在java语言上的具体实现。RxJava2在这一实现下,对Rxjava1进行了全面重写,如果之前没接触过RxJava,可以直接从Rxjava2入门,而不需要了解RxJava1。在使用RxJava2之前,对于Android开发,需要在项目中添加...

2019-03-03 17:48:10 419

转载 vue页面引入three.js创造3d动画场景

vue中安装Three.js近来无聊顺便研究一些关于3D图形化库。three.js是JavaScript编写的WebGL第三方库。Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它通过控制相机、视角、材质等相关属性来创造大量3D动画场景。首先利用创建一个Vue工程若对创建vue工程有疑惑,可以参考我前面的博文:手把手教你利用脚手架搭建一个Vue工程,搭建好以后,我们开始引入t...

2019-03-24 09:19:11 3426 1

转载 手把手教你利用脚手架搭建一个Vue工程

一个简单Vue工程的搭建#本篇文章将带你如何使用webpack-cli脚手架搭建一个vue小工程,其实熟悉了就变得简单了,此篇文章主要帮助新手入门。具体操作图文流程如下所示:1.Node环境安装(1)node.js环境安装,可以从node.js中文网站进行对应镜像的选择与安装(附镜像链接如下)http://nodejs.cn/download/,具体安装流程见下面链接:https://ww...

2019-03-24 09:16:17 450

转载 okio 源码学习笔记

首先我们来看一下应用okio的一个简单的小例子,该方法的功能就是完成文件的拷贝 public static void copyFile(String fromName, String toName) throws IOException{ File from = new File(fromName); File to = new File(toName);...

2019-03-23 08:36:05 445

转载 OkHttp 源码学习笔记(三) 数据交换的流 HTTPCodec

在上一篇文章中介绍了okhttp中连接概念以及连接建立和管理,其中在拦截器链中的ConnectInterceptor负责建立连接,并在该连接上建立流,将其放置在拦截器链中,在拦截器链中的最后一个拦截器CallServerInterceptor,通过使用流的操作完成网络请求的数据交换。下面从该拦截器开始学习okhttp时如果通过流的操作完成网络通信的。1. 最后一个拦截器CallServerIn...

2019-03-23 08:32:33 826

转载 okhttp源码学习笔记(二)-- 连接与连接管理

本篇文章为okhttp源码学习笔记系列的第二篇文章,本篇文章的主要内容为okhttp中的连接与连接的管理,因此需要重点介绍连接的概念。客户端通过HTTP协议与服务器进行通信,首先需要建立连接,okhttp并没有使用URLConnection, 而是对socket直接进行封装,在socket之上建立了connection的概念,代表这物理连接。同时,一对请求与响应对应着输出和输入流, okhttp中...

2019-03-23 08:30:57 648 1

转载 okhttp源码学习笔记(一)-- 综述

okhttp是一个网络请求框架,不仅仅可以用于Android应用中。在okhttp之前,Android中有不少的优秀网络请求框架,比如HttpClient,Volley等,而okhttp虽然与这些框架完成相同的事情,但是与之存在本质的不同,前者都是对Java中的UrlConnection进行封装,而okhttp则是直接对socket进行封装,也就是说他们所处的层次不同。除此以外,okhttp在各种...

2019-03-23 08:28:23 307

转载 Android批量插入数据到SQLite数据库

Android中在sqlite插入数据的时候默认一条语句就是一个事务,因此如果存在上万条数据插入的话,那就需要执行上万次插入操作,操作速度可想而知。因此在Android中插入数据时,使用批量插入的方式可以大大提高插入速度。 有时需要把一些数据内置到应用中,常用的有以下2种方式:其一直接拷贝制作好的SQLite数据库文件,其二是使用系统提供的数据库,然后把数据批量插入。我更倾向于使用...

2019-03-23 08:22:12 3128 1

转载 TCP、UDP、IP详解

一.计算机网络体系结构1.1 不同网络层对应的协议1.2 体系分层介绍五层协议应用层 :为特定应用程序提供数据传输服务;Telnet: 远程登录。FTP :文件传输协议。SMTP: 简单邮件传送协议。SNMP :简单网络管理协议。传输层 :为进程提供通用数据传输服务。由于应用层协议很多,定义通用的传输层协议就可以支持不断增多的应用层协议。T C P:传输控制协议 (面...

2019-03-17 13:27:29 1528

转载 实现一个有意义的垂直抽屉(DrawerLayout)

要实现上图的效果,看上去还是有一定的难度的,尤其是对于新手。今天我们借助一个工具(ViewDragHelper)来快速实现这个功能。从上面的效果图可以看到这个view有两层,自然想到应该使用的的是自定义viewgroup的。那么我们就自定义一个viewgroup,源码如下:public class VDrawerLayout extends ViewGroup {public...

2019-03-17 12:25:35 1000

转载 学习HTML5 Canvas这一篇文章就够了

一、canvas简介​ <canvas> 是 HTML5 新增的,一个可以使用脚本(通常为JavaScript)在其中绘制图像的 HTML 元素。它可以用来制作照片集或者制作简单的动画,甚至可以进行实时视频处理和渲染。​ 它最初由苹果内部使用自己MacOS X WebKit推出,供应用程序使用像仪表盘的构件和 Safari 浏览器使用。 后来,有人通过Gecko...

2019-03-17 12:25:21 1071 1

转载 安卓侧滑菜单DrawerLayout的简单使用

1、代码非常少,关键代码也就3行…DrwableActivity:public class DrwableActivity extends AppCompatActivity { private DrawerLayout drawerLayout; private LinearLayout linearLayout; private static final St...

2019-03-16 09:55:19 238

转载 OkHttp3入门介绍之Cookie持久化

前面文章介绍了OkHttp3的基本用法,GET/PST请求、上传下载文件等等,本章节主要介绍基于内存和本地缓存的Cookie管理。官网:http://square.github.io/okhttp/Github:https://github.com/square/okhttpOkHttp3Demo传送门:https://github.com/linzhiyong/OkHttp3Demo服...

2019-03-16 09:52:37 617

转载 OkHttp3入门介绍

OkHttp是一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,本文主要介绍OkHttp3的基本使用方法。官网:http://square.github.io/okhttp/Github:https://github.com/square/okhttpOkHttp3Demo传送门:https://github.com/linzhiyong/OkHttp3Demo服务端Demo传送门...

2019-03-16 09:51:14 456

转载 OkHttp3 (四)——Cookie与拦截器

Cookie在介绍如何使用Cookie之前,我们应该对后台的数据处理有一定的认识。由于HTTP协议无状态的特性,后台是无法保存用户的信息的,在此情形下,Cookie就诞生了。Cookie的作用是在客户端保存数据,然后在每一次对该站点进行访问的时候都会携带此Cookie中的数据,于是后台就可以通过客户端Cookie中的数据来识别用户。早期很多网站甚至将用户名和密码保存在Cookie中。在W...

2019-03-16 09:47:06 1498

转载 OkHttp3 (三)——创建与执行网络请求

请求在OkHttp中,一般的请求方式为:fun main(args: Array<String>) { val client = OkHttpClient() val request = Request.Builder() .url(URL) .build() val call = client.newC...

2019-03-16 09:40:37 474

转载 OkHttp3 (二)——请求

请求对象在OkHttp3中,所有的网络请求都由一个Request对象指定,而客户端的任务就是执行这个请求。Request对象不能被直接创建,必须通过Builder模式构建。这个请求对象在网络访问过程中的作用有四:指定访问地址:无论何种网络访问,我们都需要知道对方的URL地址。指定请求方式:常见的请求方式有GET,POST,PUT,DELETE,PATCH等。指定请求头:对于大部分场景,我...

2019-03-16 09:36:20 849

转载 OkHttp3 (一)——客户端对象

开始前的示例我们需要一个实际的例子来演示OkHttp的简单用法val NARUTO = "http://tupian.enterdesk.com/2013/xll/007/27/10/8.jpg"fun main(args: Array<String>) { //1,创建请求客户端 val client: OkHttpClient = OkHttpClient...

2019-03-16 09:32:09 178

转载 Cookie介绍及在Android中的使用总结

Cookie介绍cookie的起源早期Web开发面临的最大问题之一是如何管理状态。简言之,服务器端没有办法知道两个请求是否来自于同一个浏览器。那时的办法是在请求的页面中插入一个token,并且在下一次请求中将这个token返回(至服务器)。这就需要在form中插入一个包含token的隐藏表单域,或着在URL的qurey字符串中传递该token。这两种办法都强调手工操作并且极易出错。Lou ...

2019-03-16 09:26:46 1371

转载 Http中Cookie详解以及Android中操作Cookie

一. 关于Cookie一句话概括就是:cookie就是一系列的键值对组成的字符串二. Cookie的最常用场景登录状态的判定等前言如果是在浏览器中,浏览器会管理cookie,不用人为干涉,但是在移动端开发时就不同了,需要手动传递cookie,和服务端交流。如果服务器按照传统的页面开发实现实现接口,那么移动客户端就要实现像浏览器一样操作cookie。1.想明白如何操作cookie,...

2019-03-16 08:24:17 698

转载 Android okHttp网络请求之缓存控制Cache-Control

Cache-Control:Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令有下几种:Public指示响应可被任何缓存区缓存。Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用...

2019-03-16 08:19:49 2472

转载 Android onLayout、layout区别

onLayout方法是ViewGroup中子View的布局方法,用于放置子View的位置。放置子View很简单,只需在重写onLayout方法,然后获取子View的实例,调用子View的layout方法实现布局。在实际开发中,一般要配合onMeasure测量方法一起使用。onLayout方法:@Overrideprotected abstract void onLayout(boole...

2019-03-13 07:17:33 1129

转载 解决RecyclerView.getChildAt(Position)崩溃

问题:程序中,屏幕可以获取到6个子view.当getChildAt() ,position为6或者为7的时候,程序崩溃,报空指针的异常.实际上:getChildAt()这个方法,只能get到屏幕显示的部分.解决办法:View childView = recyclerView.getLayoutManager().findViewByPosition(position);...

2019-03-13 07:10:29 811

转载 java 枚举类比较是用==还是equals?

一般在Java代码里面,涉及到比较2个值的问题,除了是简单的一般数据类型意外,字符串除外,我们都是使用==来判断是否相等的,但是对于字符串和对象以及封装类型的数据都是使用equals方法,来判断2个值是否相等。所以,当我看到别人的代码中,枚举类型变量,直接使用==,来判断是不是相等,很是诧异。然后就有了下面的调查和测试。先看测试代码: /** * 测试枚举比较,使用equa...

2019-03-12 07:18:40 4379 3

转载 获取RecyclerView当前屏幕显示的第一个条目的position位置

一、关于LinearLayoutManager或GridLayoutManager获取当前屏幕第一个条目的位置或最后一个位置的方法;findFirstCompletelyVisibleItemPosition(),findFirstVisibleItemPosition() : 可以获取屏幕中展示第一个item的position值findLastCompletelyVisibleItem...

2019-03-12 07:15:17 13927 4

转载 CountDownLatch

CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。CountDownLatch原理CountDownLatch是通过一个计数器来实现的,计数器的初始化值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就相应得减1。当计数器到达0时,表示所有的线程都已...

2019-03-04 07:10:28 118

转载 android 解决系统字体大小设置引起的布局混乱问题(两种方法)

在手机系统设置中,若是修改了字体大小,会影响 app 内字体显示,导致布局混乱不齐。有两种方法,一般推荐第二种方法。字体设置方法一:字体大小单位使用 dp,而不是使用 sp。注意在 java 代码中需要用 dp 方式显示。默认是使用 sp。 tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 30); // 注意!!是Typed...

2019-03-04 07:05:37 1592

转载 Android官方架构组件DataBinding双向绑定篇: 观察者模式的殊途同归

本文中我将尝试分享我个人 搭建个人MVVM项目 的过程中的一些心得和踩坑经历,以及在这过程中目前对 编程本质 的一些个人理解和感悟,特此分享以期讨论及学习进步。缘由最近在尝试搭建自己理解的 MVVM模式 的应用程序,在这近一个月中,我思考了很多,也参考了若干Github上MVVM项目源码,并从中获益匪浅。我根据所得搭建了一个MVVM开发模式的Github客户端,并托管在了自己的githu...

2019-03-04 07:02:00 1213

转载 Android官方架构组件Navigation:大巧不工的Fragment管理框架

前言我在项目中尽量避免 使用 和 管理 Fragment, 尤其是处理Fragment的 多重嵌套 和 回退栈的情况。所幸有Activity在,我绕过了很多 Fragment 复杂的使用场景——必须承认,相比Activity的简单易上手,Fragment的古灵精怪令我头痛不已。当然,Github上也有很多前辈对于Fragment的管理框架,这是 最简单 的解决方案,比如目前比较火的 Fra...

2019-03-04 07:01:42 315

转载 Android官方架构组件Paging:分页库的设计美学

前言我是一个崇尚 开源 的Android开发者,在过去的一段时间里,我研究了Github上的一些优秀的开源库,这些库源码中那些 天马行空 的 设计 和 思想 令我沉醉其中。在我职业生涯的 伊始,我没有接触过 技术大牛, 但是 阅读源码 可以让我零距离碰撞 全球行业 内 最顶尖工程师们 的思想,我渐渐爱上了 源码阅读。在感叹这些 棒极了 的设计方式时,我也尝试去 模仿 他们的代码风格。后...

2019-03-03 18:21:32 310

转载 Android官方架构组件LiveData: 观察者模式领域二三事

本文是 《Android Jetpack 官方架构组件》 系列的最后一篇文章,和一些朋友的观点不同的是,我认为它是 最重要 的核心组件,因为 LiveData本身很简单,但其代表却正是 MVVM 模式最重要的思想,即 数据驱动视图(也有叫观察者模式、响应式等)——这也是摆脱 顺序性编程思维 的重要一步。本文默认读者已经学习了 Lifecycle , 欢迎关注笔者的Jetpack系列:争取...

2019-03-03 18:19:51 288

转载 Android官方架构组件ViewModel:从前世今生到追本溯源

概述2017年的Google I/O大会上,Google推出了一系列譬如 Lifecycle、ViewModel、LiveData等一系列 更适合用于MVVM模式开发 的架构组件。本文的主角就是 ViewModel ,也许有朋友会提出质疑:ViewModel 这么简单的东西,从API的使用到源码分析,相关内容都烂大街了,你这篇文章还能翻出什么花来?我无法反驳,事实上,阅读本文的...

2019-03-03 18:18:42 214

转载 Android官方架构组件Lifecycle:生命周期组件详解&原理分析

概述在过去的谷歌IO大会上,Google官方向我们推出了 Android Architecture Components,其中谈到Android组件处理生命周期的问题,向我们介绍了 Handling Lifecycles。同时,如何利用 android.arch.lifecycle 包提供的类来控制数据、监听器等的 lifecycle。同时,LiveData 与 ViewModel 的 l...

2019-03-03 17:56:09 374

安卓 OpenGL ES 2.0 完全入门(一):基本概念和 hello world.docx

安卓 OpenGL ES 2.0 完全入门(一):基本概念和 hello world

2019-08-25

01 Protocol Buffer技术详解(语言规范).doc

01 Protocol Buffer技术详解(语言规范).doc

2016-05-08

java设计模式

java设计模式

2016-05-08

OkHttp使用教程

OkHttp使用教程 OkHttp是一个相对成熟的解决方案,据说Android4.4的源码中可以看到HttpURLConnection已经替换成OkHttp实现了。所以我们更有理由相信OkHttp的强大。

2015-12-18

IDirectDraw7的使用

LPDIRECTDRAW7 lpDD; //DirectDraw对象 LPDIRECTDRAWSURFACE7 lpDDSPrimary ; //DirectDraw主表面 LPDIRECTDRAWSURFACE7 lpDDSBack ; //后台缓冲表面 DDSURFACEDESC2 ddsd ; //表面描述 DDSCAPS2 ddscaps ; 而且声明完表面描述后应立即用 ZeroMemory( &ddsd, sizeof( ddsd ) ); ZeroMemory( &ddscaps, sizeof( ddscaps ) ); 这两个语句使ddsd和ddscaps中的变量都为零,如果不这样做下面的CreateSurface会不成功。

2014-10-14

DirectDraw7编程基础

首先定义一个指向DirectDraw对象的指针,创建DirectDraw对象,查询以获取最新的DirectDraw接口,设置协作等级,设置显示模式。

2014-10-14

MTK短信编码.docx

目前,发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用3种编码:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,8-bit编码通常用于发送数据消息,UCS2编码用于发送Unicode字符。一般的PDU编码由A B C D E F G H I J K L M十三项组成。

2012-12-06

c语言设计(最全).ppt

C程序设计 上海工程技术大学 主讲:李旭芳 教材 C程序设计 (第二版) 谭浩强编著 清华大学出版社

2012-12-06

常用编码详解.docx

详细介绍各种常见编码的转换算法。通用字符集(UCS)、Unicode编码、UTF-8编码、UTF-7编码、GB2312编码、URL 解码

2012-12-06

刷机原理04 Android系统Recovery模式的工作原理.wps

Android系统Recovery模式的工作原理 在使用update.zip包升级时怎样从主系统(main system)重启进入Recovery模式,进入Recovery模式后怎样判断做何种操作,以及怎样获得主系统发送给Recovery服务的命令,这一系列问题的解决是通过整个软件平台的不同部分之间的密切通信配合来完成的。为此,我们必须要了解Recovery模式的工作原理,这样才能知道我们的update.zip包是怎样一步步进入Recovery中升级并最后到达主系统的。 一、Recovery模式中的三个部分 ................

2012-10-24

刷机原理03 Android系统的三种启动模式.wps

Android系统的三种启动模式 一、 系统更新update.zip包的两种方式 1. Android在升级系统时获得update.zip包的方式有两种。一种是离线升级,即手动拷贝升级包到SD卡(或NAND)中,通过settings-->About phone-->System Update-->选择从SD卡升级。另一种是在线升级,即OTA Install(over the air)。用户通过在线下载升级包到本地,然后更新。这种方式下的update.zip包一般被下载到系统的/CACHE分区下。 2. 无论将升级包放在什么位置,在使用update.zip更新时都会重启并进入Recovery模式,然后启动recovery服务(/sbin/recovery)来安装我们的update.zip包。 ............

2012-10-24

刷机原理02 Android升级包update.zip的生成过程分析.wps

Android升级包update.zip的生成过程分析1) 对于update.zip包的制作有两种方式,即手动制作和命令生成。 第一种手动制作:即按照update.zip的目录结构手动创建我们需要的目录。然后将对应的文件拷贝到相应的目录下,比如我们向系统中新加一个应用程序。可以将新增的应用拷贝到我们新建的update/system/app/下(system目录是事先拷贝编译源码后生成的system目录),打包并签名后,拷贝到SD卡就可以使用了。 第二种制作方式:命令制作。Android源码系统中为我们提供了制作update.zip刷机包的命令,即make otapackage。该命令在编译源码完成后并在源码根目录下执行。 具体操作方式:在源码根目录下执行 ①$ . build/envsetup.sh。 ②$ lunch 然后选择你需要的配置(如17)。 ③$ make otapackage。 ....................

2012-10-24

刷机原理01 update.zip包目录结构

update.zip包目录结构 boot.img是更新boot分区所需要的文件。这个boot.img主要包括kernel+ramdisk。 system/目录的内容在升级后会放在系统的system分区。在Android源码编译后out/target/product/generic/system/。

2012-10-24

空空如也

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

TA关注的人

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