自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 Android消息机制(5)MessageQueue深入解析

介绍前面的博客已经简要分析了Handler,Looper,MessageQueue的大体框架,我们已经知道,Handler主要作用是封装Message的发送和接收,Looper的功能是不断轮询MessageQueue,取出Message交给对应的Handler执行,而消息队列的休眠,唤醒,及我们比较少用到的IdleHandler,同步屏障等功能都是由MessageQueue实现的,所以下面就来详细分析上述功能是如何实现的。IdleHandler首先是IdleHandler,IdleHandler是一个

2021-07-15 17:58:08 1161 3

原创 Android应用内存管理机制

引言有个客户统计了APPs 统计的数据(我司的产品是Android 机顶盒),跟实际每个APK 统计的数据对不上,需要我们给出解释。客户的问题总结起来有三个:App总内存和所有Apk内存之和不对应:是否有系统APK是隐藏没有出现了Apps 列表的. 如果有,是否有方法/命令可以查询到盒子上安装的所有的APK?Data 和 Cache不对应:手动清除了APK 的data和cache之后,APK 显示的storage used 数据减少与data 减少不匹配。低内存的情况:除此之外,针对这个cache

2021-06-15 19:57:29 2902 4

原创 OKHttp的使用与源码简析

okhttp 的参数

2021-04-28 15:15:46 379

原创 Android架构组件(4)ViewModel框架

文章目录ViewModel介绍源码分析Application持有数据ViewModel介绍ViewModel框架介绍上是说被设计上用来在Activity或Fragment销毁、重建的时候保存它们的UI相关的数据。系统因为某种原因(屏幕旋转等)销毁,重新创建Activity的时候,存储在其中的任何临时性界面相关数据都会丢失,对于简单的数据,Activity 可以使用 onSaveInstance...

2019-12-26 22:03:49 319

原创 Android架构组件(3)LiveData框架

LiveData介绍LiveData是一个用于构建数据流的响应式框架,简单来讲的话,它就相当于一个砍掉了所有操作符的RxJava。LiveData框架中的数据源为LiveData<T>类,这是一个泛型类,T是它持有的数据的类型。它的API如下public abstract class LiveData<T> { public T getValue() publi...

2019-12-24 20:25:29 542

原创 Android架构组件(2)LifecycleRegistry 源码分析

属性介绍增加Observer删除Observer发送事件对于嵌套请求的处理

2019-12-15 15:48:07 4205 5

原创 Android架构组件(1)Lifecycles体系

前言Android架构组件(Android Architecture Components,简称AAC),是 Android Jetpack的一部分。Jetpack是谷歌的一整套开发库,具体包括下图中的内容:谷歌对于AAC的介绍是:Android architecture components are a collection of libraries that help you des...

2019-11-30 15:23:44 498

原创 Java多线程开发(三)Java内存模型和同步机制

Java内存模型缓存一致性volatile的实现synchronized的实现

2019-11-05 16:03:40 173

原创 Java多线程开发(二)Java同步机制

引用Java程序编译和运行的过程计算机存储结构分析(寄存器,内存,缓存,硬盘)Java并发编程实战:第三章、第十五章Java多线程编程实战指南(核心篇):第三章、第十一章上一节内容最后提到了影响多线程开发的三个问题:安全性、活跃性、和性能问题。其中活跃性问题和性能问题是因为程序逻辑因素导致的,只能靠开发人员自己解决。而安全性问题是因为硬件和编译器导致的,这就超出我们的影响范围了,因此Ja...

2019-10-31 19:05:53 185

原创 Java多线程开发(一)Java多线程编程简介

Java线程简介对于Java平台来说,创建一个线程就是创建一个Thread类实例,java.lang.Thread 类是Java平台的实现。Thread类构造方法和属性Thread有很多的构造方法,最后都会调到同一个初始化方法:private void init(ThreadGroup g, Runnable target, String name, long stackSize),这个方法...

2019-10-30 18:01:12 120

原创 Android 线程切换(5): 自定义ThreadPoolExecutor

文章目录

2019-08-07 21:59:03 234

原创 Android 线程切换(4): ThreadPoolExecutor 的原理和实现

文章目录线程池的运行原理流程图线程池的实现状态码ctl自定义线程池线程池的运行原理流程图线程池的实现状态码ctl自定义线程池

2019-07-23 16:05:36 153

原创 Android 线程切换(3): ThreadPoolExecutor 的定义和使用

文章目录

2019-07-18 14:57:16 394

原创 Android 线程切换(2): HandlerThread 和IntentService

文章目录HandlerThreadIntentServiceHandlerThreadHandlerThread继承了Thread,它是一种可以使用Handler的Thread,它的实现也简单,就是在 run() 方法中通过 Looper.prepare() 来初始化消息队列与 Looper.loop() 来开启消息循环。然后我们可以通过HandlerThread#getLooper获取Han...

2019-07-10 21:01:15 259

原创 Android 线程切换(1): AsyncTask

众所周知,Android的主线程中不能进行耗时操作,否则就有ANR(Application Not Responding)的风险

2019-07-10 20:48:45 277

原创 Android消息机制(4)Message

介绍Message其实没有什么好说的,就是一个普通的数据类,但是它的循环使用的机制挺有趣的:Message通过一个静态Message变量sPool,和本身有的Message属性,构成了一个链表,通过obtain和recycleUnchecked方法分别从这个链表中读取和添加节点,以此达到循环使用Message的目的,以下是这两个方法的源码。 public static Message obta...

2019-01-22 17:16:30 277

原创 Android消息机制(3)Handler

文章目录介绍send 和postdispatchMessage介绍send 和postdispatchMessage

2019-01-22 16:40:46 429

原创 Android消息机制(2)Looper

文章目录介绍prepareloopThreadLocal介绍prepareloopThreadLocal

2019-01-22 16:12:41 169

原创 Android消息机制(1)MessageQueue

介绍MessageQueue,消息队列,在消息机制的作用是维护一个Message的队列,供Looper使用。MessageQueuede 通过一个单链表(即mMessages)来实现队列,由于Message本身就要一个Message变量next,所以MessageQueue不需要定义其他结果,只需要一个mMessages变量指向链表的头节点就可以了。MessageQueue中的关键方法是enqu...

2019-01-19 19:27:48 803

原创 Android 编译时注解

导读:本文是我学习wzgiceman的两篇博文:Android 编译时注解-初认识, 和 Android 编译时注解-提升后写的,因为原博主的例子是基于Android Studio 2,而我使用的是3,所以在实践的时候遇到了一些问题,现在我在这里做一点记录:一、Annotation processors must be explicitly declared now. The followin...

2019-01-18 18:22:23 9101

原创 AIDL 方法参数的in out inout前缀作用

前言最近公司项目需要用aidl,遇到了方法参数传过去为空的问题,最后把所有参数前缀改成inout搞定,虽然避免了问题,但还是解决问题比较好,于是我花了大半个下午枚举了下,测试出了这些前缀的作用。定义前缀的作用是相对于调用这个方法的对象而言的;可将调用者称为客户端,实现方法的叫服务端将服务端能够在客户端调用方法后可以正确收到方法参数值(不报错,不为空),称之为客户端可以写入将客户端能够在...

2018-11-15 16:33:07 561

原创 Kotlin自学之旅(十)泛型

声明泛型类和泛型函数类型参数约束型变型变的概念声明处型变使用出型变星投影总结

2018-09-19 19:24:35 184

原创 Kotlin自学之旅(九)约定和重载运算符

重载运算符算术运算符比较运算符集合和区间的约定get 和 set区间检查迭代区间解构声明委托属性总结

2018-08-31 11:21:36 189

原创 Kotlin自学之旅(八)类型系统

可空类型处理可空类型数据类型基本类型根类型和空类型集合可空集合。。和只读集合。。数组

2018-08-26 22:51:04 364

原创 Kotlin自学之旅(七)Lambda表达式

Lambdalambda表达式,或简称lambda,,本质上就是可以传递给其他函数的一小段代码。我们常常需要表达这样一种想法:“当某件事发生的时候做出处理”,在老版本的Java中,我们可以用匿名内部类实现,这种语法可以工作,但是有点啰嗦,而lambda提供了一种更加优雅与简洁的实现。语法如前所述,一个lambda把一小段行为进行编码,你能把它当作值到处传递。它可以被独立的声明并存储...

2018-08-21 23:03:07 164

原创 Kotlin自学之旅(六)对象和委托

对象表达式对象声明伴生对象委托总结

2018-08-15 23:32:07 150

转载 Android Studio 声明为系统应用并添加 系统jar包

转载自 Andro-bot的博客 使用eclipse添加framework.jar很简单,但Android Studio上却很麻烦,上一次遇到这个之前百度了两天才解决,但是也是属于一个个办法瞎碰。结果这次我又不知道怎么搞了,就继续百度呗!还好毕竟搞过了一次,还是有点记忆在的,并且运气好看到了这篇博客,它已经把步骤讲的很清晰了,我只做了些小小的改动,就解决了问题。吸取上一次的教训,我决定写这篇博客...

2018-08-15 12:01:52 3124

原创 Kotlin自学之旅(五)特殊类

数据类密封类枚举类嵌套类总结

2018-08-14 23:36:23 120

原创 Kotlin自学之旅(四)函数、扩展函数

函数声明Kotlin 中的函数使用 fun 关键字声明,参数的类型写在它的名称后面,每个参数必须要显式的类型:fun double(x: Int): Int { return 2 * x}像上面的定义的函数被称为代码块体,如果一个函数是由单个表达式构成的,我们可以将这个表达式作为完整的函数体,这被称为表达式体:fun double(x: Int) = 2 * x...

2018-08-13 19:23:28 219

原创 Kotlin自学之旅(三)类和接口、继承

类的

2018-08-12 22:46:27 807

原创 Kotlin自学之旅(二)选择、迭代

选择if表达式when表达式迭代while循环for循环总结选择if表达式在 Kotlin 中,没有三元运算符(条件 ? 然后 : 否则),代替它的是if-else表达式,因为在Kotlin中,if既可以是语句,也可以是表达式——即拥有返回值;所以你可以像下面这样使用if-else:// 传统用法var max = a if (a &amp;amp;amp;amp;amp;lt;...

2018-08-09 22:45:51 165

原创 Kotlin自学之旅(一)变量、基本类型

变量在Kotlin中,定义变量是用关键词开始,然后是变量名称,最后才是变量类型,就像下面这个例子一样:val a: Int = 10000当然,如果你不指明变量的类型,编译器也能分析出 = 后的表达式的值,并将它的类型作为变量的类型:var string = &amp;amp;amp;amp;amp;amp;quot;hello world!&amp;amp;amp;amp;amp;amp;quot; 但如果变量没有初始化器,编译器无法推断出它的类型,这时就必须显式地

2018-08-08 22:17:05 205

空空如也

空空如也

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

TA关注的人

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