自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 LiveData

JetPacket LiveData本文主要介绍两方面的内容LiveData简单使用LiveData的粘包事件原因以及处理方式LiveData简介LiveData是可以在给定生命周期内观察到的数据持有者类。这意味着Observer可以配对添加LifecycleOwner,并且只有在配对的LifecycleOwner处于活动状态时,才会向该观察者通知有关包装数据的修改。如果LifecycleOwner状态为STARTED或RESUMED,则将其视为活动状态 。观察者添加 observeFor

2021-01-19 18:02:24 148

原创 Android 事件分发

Android 事件分发Android事件分发主要涉及的类主要涉及的类有:Activity,PhoneWindow,DecorView,ViewGroup,View关键是ViewGroup和View,ViewGroup是继承自View的,ViewGroup是View的子类。什么是事件冲突当有一个事件被触发,但是同时可能存在多个View尝试去处理消费该事件,就会造成事件冲突ViewGroup和View在事件分发中所扮演的角色通常情况下讲ViewGroup是指里面还包含有子View的View,如果

2021-01-05 10:50:52 179

原创 Android AMS

ActivityManagerService是Android系统中一个特别重要的系统服务,也是我们上层APP打交道最多的系统服务之一,ActivityManagerService(以下简称AMS) 主要负责四大组件的启动、切换、调度以及应用进程的管理和调度工作。所有的APP应用都需要与AMS打交道zygote启动之后,在zygote中会启动SystemServer,会通过反射进入SystemServer的main函数//SystemServer.java/** * The main.

2020-09-10 15:09:14 488

原创 RecyclerView缓存机制

RecyclerView缓存机制对于RecyclerView的缓存机制,首先要考虑一下几个问题:回收什么?复用什么? 回收到哪里去?从哪里获得复用? 什么时候回收?什么时候复用?带着这几个问题,去看源码,相信如果能准确的回答这几个问题,那么对RecyclerView的回收机制,基本就了解清楚了。回收什么?复用什么?先回答这个问题,回收的是ViewHolder,复用的也是ViewHolder回收到哪里去?从哪里获得复用?这个分为两部分:1,回收到哪里去?我...

2020-09-07 12:02:38 1046 3

原创 Android Handler源码解析

前言在android开发中,经常会在子线程中进行一些操作,当操作完毕后会通过handler发送一些数据给主线程,通知主线程做相应的操作。探索其背后的原理:子线程 handler 主线程 其实构成了线程模型中的经典问题 生产者-消费者模型。 生产者-消费者模型:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加数据,消费者从存储空间中取走数据。好处: - 保证数据生产消费的顺序(通过MessageQueue,先进先出) - 不管是生产者(子线程)还是消费者(主线程)都只依

2020-08-24 19:34:54 378

原创 Android换肤框架涉及源码流程

换肤框架设计的源码流程Android系统加载View的流程:一般是在Activity的OnCreate方法中调用setContentView(int resId)//Activity.java/** * Set the activity content from a layout resource. The resource will be * inflated, adding all top-level views to the activity. * *

2020-08-11 14:34:33 236

原创 Android自定义View

概述Android开发进阶的必经之路为什么要自定义View自定义View的基本方法自定义View的最基本的三个方法分别是: onMeasure()、onLayout()、onDraw(); View在Activity中显示出来,要经历测量、布局和绘制三个步骤,分别对应三个动作:measure、layout和draw。测量:onMeasure()决定View的大小; 布局:onLayout()决定View在ViewGroup中的位置; 绘制:onDraw()决定绘制这个View。自定义控

2020-08-02 14:28:29 13716 14

原创 Java反射获取泛型相关信息

GenericArrayType泛型数组,组成数组的元素中有范型则实现了该接口; 它的组成元素是ParameterizedType或TypeVariable类型,它只有一个方法:Type getGenericComponentType(): 返回数组的组成对象package com.enjoy.reflect.genericArrayType;import java.lang.re...

2020-05-06 16:15:35 381

原创 Android PMS相关流程

基于Android9.0PMS启动这里我简单的将其分为以下几个步骤:SystemServer通过PMS的main方法启动PMS PMS构造方法中初始化Settings 扫描各个系统目录下APP相关信息SystemServer通过PMS的main方法启动PMSPMS启动是在SystemServer中,startBootsTrapService方法中mPackag...

2020-04-02 22:33:02 3031 1

原创 Retrofit源码简析

创建Retrofit对象实例通常使用Retrofit,如下:Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://www.wanandroid.com/") .client(builder.build()) .addConverterFactory(GsonConverte...

2020-03-02 17:12:19 195

原创 Java 锁相关,Synchronized、显式锁Lock、读写ReentryReadWriteLock关键字使用总结

Java线程锁关于锁的种类,请参考下面这个链接:https://blog.csdn.net/tyyj90/article/details/78236053在本文中,只研究锁相关关键字的使用。SynchroinzedSynchronized可以修饰对象、类、方法,平时用的最多的也就是Synchronized关键字使用synchronized关键字将会隐式地获取锁,但是它将锁...

2020-02-12 10:35:16 232

原创 Java线程相关,join,interrupt,wait等方法总结

线程的启动线程的启动方式有以下三种:1、X extends Thread;,然后X.run2、X implements Runnable;然后交给Thread运行3、X implements Callable;然后交给Thread运行先看代码:public class NewThread { /*扩展自Thread类*/ private static class ...

2020-02-10 16:14:25 418

原创 Android 关于AIDL通信,RemoteCallbackList实现Server回调Client

Android 接口定义语言 (AIDL)Android 接口定义语言 (AIDL) 与您可能使用过的其他接口语言 (IDL) 类似。您可以利用它定义客户端与服务均认可的编程接口,以便二者使用进程间通信 (IPC) 进行相互通信。在 Android 中,一个进程通常无法访问另一个进程的内存。因此,为进行通信,进程需将其对象分解成可供操作系统理解的原语,并将其编组为可供您操作的对象。编写执行该编...

2020-02-05 10:48:27 2038

原创 Android 插件化原理(三),通过hook启动插件Activity,修改Resources,调用插件资源

此文章基于Android 插件化原理(一)和Android 插件化原理(二)众所周知,在Android中,四大组件是需要在AndroidManifest.xml文件中注册之后才能调用的,但是插件APP可能并没有安装,只是放在终端的某个存储路径上,故系统会找不到插件里面用到的四大组件;那么如果宿主APP需要调用插件APP的四大组件呢,比如,宿主APP要启动插件APP中的某个Activity,需...

2020-01-18 22:42:06 1092

原创 Android 插件化原理(二),ClassLoader加载类原理,双亲委托,通过加载APK调用插件代码

上一章节中,讲了如何通过ClassLoader加载dex文件,调用插件中的代码,链接:https://blog.csdn.net/qq_31429205/article/details/103952636加载原理在上一章节中,已经讲过,ClassLoader加载类是通过loadClass方法加载类文件的:Class<?> clz = dexClassLoader.lo...

2020-01-13 17:40:20 464

原创 Android 插件化原理(一),通过dex文件调用插件app代码

Android插件化原理,从以下三个问题切入:什么是插件化 如何实现插件类的加载 如何实现插件资源的加载什么是插件化插件化技术最初是源于免安装运行APK的想法,这个免安装的APK就可以理解为插件,而支持插件的app,则称之为宿主;一方面减小了安装包的大小,另一方面可以实现 app 功能的动态扩展 插件化解决的问题 APP的功能越来越多,体积越来越大 模块之间的...

2020-01-13 14:59:32 1003

原创 Java 泛型,上界(生产者),下界(消费者)总结

Java泛型1,什么是泛型Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。2,作用第一是泛化。可以用T代表任意类型Java语言中引入泛型是一个较大的功能增强不仅语言、类型系统和编译器有了较大的变化,以支持...

2020-01-03 16:05:31 1988

原创 Android JNI线程中回调Java方法

1,Android Jni线程中回调Java方法需要注意问题 获取全局JavaVm 通过JavaVm获取当前线程JNIEnv 从UI线程传入当前线程的Object必须是全局变量 通过JavaVm的AttachCurrentThread方法将当前线程附着到JavaVm 在线程调用执行完之后,释放全局变量,释放当前线程JNIEnv 2,上代码(talk...

2019-12-03 17:09:53 848

原创 Android JNI 动态加载

一,JNI动态加载主要依赖于jni_OnLoad和jni_OnUnLoad两个方法官方文档链接:https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html#library_version JNI_OnLoad jint JNI_OnLoad(JavaVM *vm, void *rese...

2019-12-03 15:22:38 1090

MyPlugin.rar

Android 动态加载 调用未按章插件四大组件 调用插件资源 通过参考VirtualAPK,熟悉系统加载APK,加载资源的流程,熟悉反射、动态代理等技术

2020-01-18

空空如也

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

TA关注的人

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