![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 76
子木-沐阳
纸上得来终觉浅,觉知此事必躬行
展开
-
Android--记录一次触摸事件回收导致的崩溃
ava.lang.RuntimeException: MotionEvent **** recycled twice原创 2022-08-23 16:21:48 · 845 阅读 · 1 评论 -
Android---使用Hook技术移除特定的弹窗
移除第三方弹出的window原创 2022-07-16 09:31:42 · 1367 阅读 · 0 评论 -
Android Animation 分析与总结
属性动画的原理:通过反射setXX()/getXX()方法,动态修改属性XX的值1.为什么会有Animation?实现项目中的一些特殊效果,使项目看起来更加顺畅2.Animation的含义是什么?针对android中的不同控件,实现控件的渐变,移动,旋转,缩放,以及组合形成的其他混合效果。原理分析:1 调用View.startAnimaiton(Animation),开启一...原创 2021-11-15 17:01:07 · 441 阅读 · 0 评论 -
Android 内存泄露常见场景汇总
心情么么哒,又可以白嫖咯…常见概念什么是内存泄露?该被GC回收的内存没有被回收。讲人话:短生命周期的引用被长生命周期的对象持有,导致短生命周期的对象的内存无法被GC回收。举个例子:非静态内部类默认持有外部类的引用,不幸的是,我们在外部类创建了一个该内部类的静态实例。静态实例的生命周期与长与普通实例的生命周期,而静态实例是可以作为GCRoots的根节点的,导致GC在进行可达性分析时,外部类的引用一直在引用链上,不被回收。这样就导致了外部类对象的内存泄露。持续的内存泄露会导致内存溢出什么是内存原创 2021-11-12 17:02:06 · 1967 阅读 · 0 评论 -
Handler 源码学习与分析
目录MessageMessage中一些常见的参数与APIpublic final class Message implements Parcelable{ public int what; // 消息的id public int arg1; // 整数参数1 public int arg2; // 整数参数2 public Object obj; // 任意类型参数 int flags; // 消息标记:正在使用异步还是同步 Bundle data;原创 2021-11-05 18:00:00 · 1550 阅读 · 0 评论 -
Android--耗电优化
谁在消耗手机电池的电量我们写的应用程序不会直接消耗手机电池的电量,而会通过使用手机的硬件模块来消耗电量。例如:CPU,WIFI 模块, GPS 模块,NetWork 模块, WakeLock 模块, 音视频,Screen…电量与应用程序电量计算公式:** 电量 = 电压 * 电流 * 时间 **。一般,手机的电压是恒定的,所以,电量只与电流和时间的乘积有关。所以,模块电量计算公式:**模块电量= 模块电流 * 模块使用时长 **。不同的模块,单位时间内消耗的电流不一样。如何获取模块单位时间.原创 2021-10-13 18:51:23 · 1466 阅读 · 0 评论 -
Android--SharedPreferences学习
文章目录定义读操作优化写操作优化线程安全ANR问题进程安全问题总结定义SharedPreferences 是一种轻量级的存储类,以KV(Key-Value)键值对的方式保存数据,其数据存储在本地的一个xml文件中,默认是data/data/share_prefs文件。所以,SP本质是对XML文件的读写操作。在使用K读取和写入对应的V时,需要对xml文件进行解析,因此这是一个耗时随着文件大小成正比的操作。轻量级:SP适合存储简单的数值类型的数据,复杂的数据不适合存在SP中。读操作优化从SP的本质可原创 2021-10-09 18:51:28 · 342 阅读 · 0 评论 -
Android--大转盘
文章目录前言思考代码总结前言无论是线上推广,还是线下营销,转盘游戏都是非常吸引人的一项活动,就像电视剧《赘婿》中的“拼刀刀”,达到的是万人空巷的影响力。其实,这是一种赌徒心理。每个人都希望不劳而获,这是赌徒心理的成长的肥沃土壤,不幸的是,千百万年的成长中,人已经形成了避难趋易的本性。转盘是一种傻瓜式的操作,只需要手指点一下,不过几秒钟,就可以收到反馈。而想要立即得到结果,害怕未知依然是每个人的本质。所以,转盘游戏有其滋生的土壤。思考怎么样实现一个转盘那?首先:转盘是一个圆,然后把圆等分成几份,每一原创 2021-10-09 11:25:24 · 1382 阅读 · 3 评论 -
Android--仿抖音刷新
文章目录前言观察&思考代码实现使用总结前言抖音作为一个国民级的娱乐短视频应用,小编平常的时候也没少刷,往往一刷一关,半天就过去了。作为一个 Android 开发者,玩自家的应用没有玩抖音的时间长,感觉挺丧的。出于一种莫名其妙的心理,就想着从抖音那里偷学一些东西。但是从哪里开始那?想了想,还是先偷一个刷新动画吧。观察&思考先是觉得抖音的刷新动画挺好玩的,然后仔细观察了下。首先它有两个圆,一个红的,一个白的,感官上两个圆像是围着一个大圆在做圆周运动,忽左忽右,忽前忽后的,说明它用到了平移原创 2021-06-11 16:11:50 · 306 阅读 · 0 评论 -
设计模式之代理模式
代理模式1.代理模式介绍代理模式也称委托模式,是一种结构型设计模式。2.代理模式的定义代理模式是在不改变原始类的情况下,通过引入代理类实现对原始类附加新的能力.3.代理模式的使用场景当无法或不想直接访问某个对象或者访问某个对象存在困难时可以通过一个代理对象间接访问。为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。4. 实现方式代理模式的实现根据不同的条件,实现的方式也不同.原始类是我们自己维护的,那么我们可以使用基于接口而非实现的思想实现.步骤:1.代理类与原始类实现同原创 2021-01-21 14:46:47 · 144 阅读 · 0 评论 -
Android - 九宫格
前言作为一个懂点Android的搬砖猿,作为一个有孩子的爸爸,看到孩子天天玩农药,就想着怎么减少他玩农药的时间.后来观察了他一段时间,总结出一个规律:他刚进游戏的时候会先去用钻石抽奖,看到转来转去的动画,他还特别高兴.于是乎就用android的知识,写了一个九宫格抽奖的Demo.思考怎么样实现一个九宫格那?我想到的是Android现有的控件有哪些可以实现:GridView,RecyclerView,这些都可以实现九宫格,且我都实现了一遍.但是写出来之后,我觉得没有什么挑战性,就想着:作为一个Andro原创 2021-01-17 17:45:43 · 680 阅读 · 1 评论 -
RecyclerView 进度条样式
文章目录ScrollBar 属性自定义圆角 ScrollBar 样式源码分析结尾ScrollBar 属性属性选值影响scrollbarsvertical/horizontal/none设置垂直/水平方向的进度条 or 不设置进度条scrollbarStyleinsideOverlay默认值,在padding区域内并且覆盖在view上scrollbarStyleinsideInset在padding区域内并且插入在view后面scrollbarStyle原创 2020-10-27 18:52:33 · 1531 阅读 · 0 评论 -
关于对象池的一些分析和总结
文章目录定义如何设计一个对象池实例 OkHttp的网络连接池定义有借有还,先放在这,突然觉的这句话与对象池很配!!!将具有生命周期期的结构化对象缓存到带有一定管理功能的容器中,以提高对象的访问性能。对象池与普通的本地 cachce 缓存策略有什么不同? 第一:本地 cache常常会有一些失效策略,比如按照时间,访问量等,而 对象池是没有这些特性的;第二:缓存中的对象是没有一个完整生命周期的概念,而对象池中的对象是具有完整生命周期的,而且我们还可以管理这些生命周期。从上面不难看出,对象池的目的: 减原创 2020-07-17 15:38:10 · 277 阅读 · 0 评论 -
Android——UI卡顿分析与整理
文章目录以下内容,参考至 [面对 UI 卡顿,如何入手分析解决问题](https://kaiwu.lagou.com/course/courseInfo.htm?courseId=67#/detail/pc?id=1881)什么导致了卡顿怎么分析卡顿问题CPU&GPUVsyncChoreographerSystrace 工具卡顿常出现的场景以下内容,参考至 面对 UI 卡顿,如何入手分析解决问题什么导致了卡顿内存抖动是造成 UI 卡顿的最主要原因。内存抖动的原因是频繁的创建和回收对象。而回收对原创 2020-07-16 17:30:04 · 551 阅读 · 0 评论 -
并发库 —— CopyOnWriteArrayList
概述CopyOnWrite(COW)是在写操作的时候copy当前数据,然后在写完数据之后设置成新的数据。适用于读多写少的并发场景。CopyOnWrite 使用了 ReentrantLock(支持重入的独占锁) 来支持并发操作。ReentrantLock 是一种支持重入的独占锁,任意时刻只允许一个线程来获得锁。ReentrantLock 默认是非公平锁(即不按照进入等待队列的顺序唤醒线程)机制。本质是一种延时策略,只有在真正需要复制的时候才复制,而不是提前复制好。源码分析添加与读取元素fina原创 2020-07-02 16:16:11 · 178 阅读 · 0 评论 -
Retrofit 与 OkHttp 实现网络请求
Retrofit什么是Retrofit基于 RESTful Api设计规范的 Http 网络请求框架的封装。网络请求本质上还是使用OkHttp完成,而Retrofit负责网络网络请求接口的封装。使用步骤创建 Retrofit 实例,使用单例模式创建描述网络请求的接口(Interface)并使用 注解 描述并配置网络请求参数创建网络请求接口实例 retrofit.create();发送网络请求(Request) enqueue,交由OkHttp处理请求OkHttp得到服务端响应(Respon原创 2020-07-02 11:20:08 · 510 阅读 · 0 评论 -
RecyclerView学习与总结
RecyclerViewRecyclerView,顾名思义,这个View代表的就是一个可循环使用的视图集合控件,它定义了ViewHolder类型标准,封装了View缓存判断逻辑,更强大的是它可以通过一个LayoutManager将一个RecyclerView显示为不同的样式。目的: 在有限的屏幕内展示大量的内容。RecyclerView的五虎将RecyclerView.LayoutManager :负责Item视图的布局的显示管理RecyclerView.ItemDecoration:给每一项I原创 2020-06-01 00:05:23 · 470 阅读 · 0 评论 -
Android 存储学习
文章目录前言:此文是对张绍文在极客时间上的文章做的笔记Android 存储基础Android 分区Android 存储安全Android 存储方式序列化与反序列化对象序列化数据序列化前言:此文是对张绍文在极客时间上的文章做的笔记Android 存储基础Android 分区什么是分区?分区就是将设备中的存储划分为一些互不重叠的部分,每个部分都可以单独的格式化,用作不同的目的。使用 ad...原创 2020-02-13 12:59:57 · 557 阅读 · 0 评论 -
SlidingPanelLayout学习与使用
文章目录SlidingPanelLayout应用场景常用API使用方式源码分析总结SlidingPanelLayout应用场景SlidingPaneLayout 是Android在android-support-v4.jar中推出的一个支持测滑面板的布局。例如:头条详情页,知乎详情页…都是支持侧滑移除Activity的。通过抓取手机页面的xml,可以看到他们使用的技术也都是SlidingPa...原创 2020-01-16 18:28:28 · 688 阅读 · 0 评论 -
Android线程间通信 ——Handler
Handler解决了什么问题?由于Android开发规范的限制:子线程不能进行UI控件的刷新,否则就会触发异常:android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.。但是在子线程执行...原创 2020-01-05 23:30:12 · 170 阅读 · 0 评论 -
Android异步消息处理机制——AsyncTask
原理:使用 ThreadPool + Handler 实现:在子线程进行耗时操作,UI线程实现UI更新,防止阻塞UI线程。即:子线程向UI线程切换。执行步骤创建AsyncTask实例(必须在UI线程) new AsyncTask(Params… params)asynctask.excute(),使用线程池执行异步任务(必须在UI线程) WorkerRunnable exte...原创 2020-01-03 08:12:55 · 218 阅读 · 0 评论 -
ConstraintLayout——约束布局学习与使用
目录 介绍 为什么使用ContraintLayout 如何使用ConstraintLayout 辅助工具 总结 目录参考介绍ContraintLayout是一个android.view.VBiewGroup,可以在系统Api 9以上使用,它的出现主要是为了解决布局嵌套过多的问题。从Android Studio 2.3起,官方模板默认使用Constrain...原创 2019-11-07 15:17:52 · 400 阅读 · 0 评论 -
Android跨进程通信——ContentProvider
概念作为四大组件之一(Activity , Service , BroadcastReciver , ContentProvider),为我们提供了不同进程甚至是不同应用之间共享数据的机制。启动性能ContentProvider的onCreate()在Application.onCreate()之前调用,而且都是在main线程创建的。因此,自定义ContentProvider的构造函数,静态...原创 2019-11-07 00:26:05 · 570 阅读 · 0 评论