自定义博客皮肤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)
  • 收藏
  • 关注

原创 查找手机中安装的apk位置

pm path com.coloros.safecenter

2021-08-03 11:07:22 2429

原创 SQLite 异常处理

线上crash日志回捞到了这样一条case: SQLiteDiskIOException: disk I/O error (code 266, errno 5): SQLiteConnection.nativeExecuteForCursorWindow(Native Method) SQLiteConnection.executeForCursorWindow(SourceFile:941) SQLiteCursor.moveToPosition(SourceFile:130) 看起来是到了sqlite

2021-06-22 14:51:22 1131

原创 LruCache的原理和使用

为什么使用LruCache缓存 首先看做一个缓存的关键步骤, 存储,读取,清理。 存储和读取区别不是很大,Lru算法做缓存和普通的数据结构做缓存相比最大的不同就是对清理策略的处理,由于空间的限制,所有的缓存都需要一个清理策略,最简单的清理策略就是定一个过期时间和一个最大空间,超过最大占用空间了, 需要进入清理流程, 还有超过过期时间的缓存内容被标记为过期,进入清理流程,所以我们需要维护一个时间字段...

2020-04-24 14:42:00 756

原创 Handler原理,源码,常见问题,从Java到Kernel解析,面试题详解

导读: 本文打算分n步骤来讲解Handler,首先要有一个整体的流程说明,看看他的从Java 到kernel的完整调用过程,由于Handler还算是代码比较简单,逻辑比较清楚,所以这个过程也是相对清晰。 第二个步骤是每个重点类的详细解读,包含引用关系,重点方法的解析。 第三个步骤就是涉及到Linux操作系统内核的一些知识简单概述,作为科普。 第四个步骤就是习题时间,作为训练,解答市面上关于Han...

2020-03-13 16:13:31 328 2

原创 Binder机制原理、源码、AIDL,IBinder,Binder,IInterface,BinderDriver,需要的都在这里了

导读: 本文分为三个阶段, 第一阶段,原理概述,力争说人话的基础上,讲明白Binder机制在搞什么,为什么这样搞,以及具体是怎么搞的。 第二阶段,代码层面描述,主要描述了,AIDL、IBinder、Binder、IInterface、Binder Driver是如何设计和实现第一阶段的构想。 第三阶段,实例操作,不使用半自动的AIDL工具,纯手动利用Binder实现一把进程间通信。 相信这一套...

2020-03-06 04:21:49 1022

原创 RxJava异步销毁CompositeDisposable类源码分析

如果订阅在子线程,响应在主线程,容易发生视图层销毁,而我们的异步操作还没有响应的情况,导致bug或者内存泄露。 RxJava官方提供了```CompositeDisposable```来处理这个问题,但如果不了解他的原理会出现很多使用上的错误,比如如果已经调用过```dispose```函数,很多同学发现,再次add之类的操作全都不灵了,而且clear和dispose到底有什么区别? 所以有必要...

2019-07-03 16:42:52 728

原创 Kotlin无法引用同模块下的java类问题 compileKotlin failed

除了一些常见的配置问题(这些网上大把大把的文章),这次老项目又遇到一个诡异的问题。 问题描述: 项目是组件化的,其他的module都是可以正常再kotlin类引用java,只有一个module不行, 而且这个module只是不能应用自己module的java类, 公共组件的java类是没有问题的。 解决过程: 很明显是这个module的问题,但是kotlin的配置是没毛病的。最后发现唯一的...

2019-05-16 10:26:26 5757

原创 OKHttp源码分析 part 1

一个最普通的调用方式client.newCall(request).execute(); 调用的初始都是从OkHttpClient开始的,我决定也从这里开始,看源码先画图,先画出今天要看的源码流程图吧。 Client主要处理了一堆初始化的东西。最后都是生成一个Call来进行下一步,看下 Call接口 他的实现类RealCall重写了Call的所有的方法,而OkHttpClient重写了Call...

2019-04-10 17:39:34 227

原创 kotlin和java混用 空安全的坑

再android studio中,使用kotlin 调用一个会返回空的java函数, 是不会提示空安全的,只有加上@nullable之后才会提示。 public static <T> T jsonToObj(String json, Class<T> tClass) { if (TextUtils.isEmpty(json) || tClass == null) {...

2019-04-03 14:31:31 1681

原创 科创板影子股投机调研

一号选手晶晨半导体竞争对手 市值 pe 现金流 营收增速 净利增速 全志科技 84 11.15% 负 -23.70% 255% 选中 ...

2019-03-26 00:23:31 392

原创 变形泛型-Kotlin 中的 out 和 in关键字理解

首先有两个概念,协变和逆变 协变就是T所在位置可以由T的子类替代。就是 逆变是就是T所在位置都可以由T的父类替代。 这个东西很绕,他们都是变形(variance)的一种表现形式,编程语言都需要考虑这个性质,可以看下百度百科 先记住上面两句总结,再看一些例子就会加深一定的理解了。 我们先定义一个类,里面有一个函数 class Collection1<E> { fun <o...

2019-03-25 18:18:26 1530 1

原创 Java注解的基本使用

1,注解一般和反射联合使用 2,jdk自带注解有三个:@Override、@Deprecated、@SuppressWarnings 3,定义注解需要使用元注解。 4,元注解:只能用来定义注解,有四个: @Target代表作用域(在哪里调用) public enum ElementType { /** Class, interface (including annotation type)...

2019-03-22 15:13:07 218 1

原创 Scroller源码分析(OverScroller)

很多和滚动啊滑动啊有关的功能,都绕不开一个类,Scroller,如果只是想移动画布的话,在View中就有一些我们可以使用的api, 例如mScrollX,mScrollY,scrollTo(),ScrollBy(),但是这些方法会直接一步到位,所以我们需要scroller来实现平滑的滚动,或者各种骚操作滚动。 在Api19,Google爸爸新引入了OverScroller,相比之下,多了处理超越边...

2019-03-21 17:53:39 1083 1

原创 ScrollView源码分析

onInterceptTouchEvent() 先看返回值 onInterceptTouchEvent(){ /* * The only time we want to intercept motion events is if we are in the * drag mode. */ return mIsBeingD...

2019-03-20 15:43:17 572 1

原创 ViewPager动态指定高度

有时候会遇到这种需求,ViewPager里面几个Fragment,而ViewPager的外面是一个ScrollView,要求可以横滑和竖滑。 由于ScrollView的原因,ViewPager必须设置成warp_content,众所周知,这样是不行的,网上大部分的方法是,复写onMeasure方法,重新测量子view的高度,然后让ViewPager的高度等于子view里面高度最大的那一个。 类似这...

2019-03-15 13:49:37 1714

原创 Android LayoutParams的相关知识

查资料 改变LayoutParam是什么原理? LayoutParam的基类是ViewGroup.LayoutParams,只有宽高两个属性 常用的直接子类只有一个 MarginLayoutParams,他也是ViewGroup的静态内部类,多出了margin的属性。 可以看到常用的FrameLayout.LayoutParams, GridLayout.LayoutParams, Lin...

2019-03-15 11:42:00 309

原创 Jetpack-Lifecycle

LifeCycle 有两个主要的概念来追踪组件的生命周期 Event The lifecycle events that are dispatched from the framework and the Lifecycle class. These events map to the callback events in activities and fragments. State ...

2019-03-01 17:24:50 218

原创 Jetpack - ViewModel

背景: The Android framework manages the lifecycles of UI controllers, such as activities and fragments. If the system destroys or re-creates a UI controller, any transient UI-related data you store in...

2019-03-01 14:49:01 299

原创 Android AlertDialog全解析

AlertDialog的显示可以分为几种: 一,常规用法: 就是标题,内容,三个按键 二,显示列表 使用setItem()方法,代替content位置 三,显示单选多选框 setSingle/Mutil.... 四,显示自定义的View View v = View.inflate();//加载自定义View setView(v);

2015-06-21 23:23:50 163

空空如也

空空如也

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

TA关注的人

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