自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android 混淆模板

混淆

2024-02-26 18:13:28 433 1

原创 Android——MediaStore媒体文件库

在应用中,将文件保存到本地,是很常见的 I/O 操作。而有的图片或者视频文件不单只是需要保存到本地,涉及到的不仅仅是一个 I/O 操作了,还需要考虑如何更新 MediaStore,这样才可以在系统相册中,看到它。MediaStore的本质MediaStore,本质上是 Android 维护的一个文件系统的数据库,它记录了当前磁盘上所有的文件索引,我们可以通过它,快速的查找当前系统的文件。保存文件到MediaStoreMediaStore 刷新的时机是不一定的,也就是说,保存的一张图片文件,Media

2023-12-01 17:03:53 1143 2

原创 Lifecycle、LifecycleOwner、LifecycleObserver

LifecycleOwner 常用于 viewmodel.livedata.observe(lifecycleOwner) {},如果 lifecycleOwner 持有的 Lifecycle 的生命周期在活跃状态时,数据发生了变化,则会走到后面的回调中。例如:自定义 LifecycleOwner,可以自己维护一个生命周期。init {// 这里可以设置你想要的初始状态// 在Activity的onDestroy中调用此方法以销毁LifecycleActivity 中代码) {

2023-12-01 16:29:10 656 1

原创 自定义 LifecycleOwner

自定义 LifecycleOwner。Activity 中代码。

2023-11-30 10:30:17 233

原创 协程相关介绍

比如原来的协程是在 main 线程里面执行的,通过 withContext 可以让 withContext 里面的代码段切换到指定的其他线程里面工作,此时当前协程会挂起,直到 withContext 内部的代码运行完成才会继续运行 withContext 外部的代码。这样可以避免创建过多的线程,节省资源。在 Activity 或者 Fragment 中,可以使用 lifecycleScope.launch 启动协程,这种方式启动的协程会随着LifecycleOwner的销毁而销毁,避免内存泄漏。

2023-11-10 16:58:02 199 1

原创 AndroidStudio 处理 java.lang.OutofMemoryError:Java heap space 问题

org.gradle.jvmargs 用于指定守护进程的JVM参数。Java 虚拟机具有一个堆(Heap),堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的,在JVM中堆之外的内存称为非堆内存(Non-heap memory)。与分配太少内存类似,分配太多内存可能会降低性能。1、修改 gradle.properties 配置文件内容中 gradle 堆的大小,将 org.gradle.jvmargs 设置为 -Xmx4096m 或者更大,具体情况试电脑内存而定。

2023-11-01 16:47:00 2617 1

原创 AndroidStudio 打包混淆报错(Missing classes detected while running R8)

Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /Users/xxx/missing_rules.txt.(运行 R8 时检测到缺少类。请添加缺少的类或应用在您的 missing_rules.txt 路径中生成的其他保留规则)

2023-10-30 17:31:34 3280 1

原创 kotlin 中获取异步操作的返回值

async 会开启协程,然后调用 async 返回的 Deferred 的 await() 方法,即可获取 async 协程运算的结果。${jobawait。

2023-09-18 11:04:44 930

原创 反编译工具介绍

jadx作用:相当于 dex2jar + jd-gui,支持apk、dex、jar、zip、class、aar 文件。apktool 作用:查看二进制文件,可以提取出图片、布局、AndroidManifest 文件进行查看。jd-gui 作用:查看APK中的 classes.dex 转化成的 jar 文件,即源码文件。dex2jar 作用:将apk反编译成java源码(classes.dex转化成jar文件)。

2023-04-18 16:03:04 160

原创 Android ImageView 的 scaleType 详解

ImageView 的 scaleType 详解

2022-10-17 16:21:23 665

原创 Android 设置字体样式

Android 设置字体样式

2022-10-17 16:17:49 1587

转载 Android——事件分发

参考文章:https://www.cnblogs.com/chengxuyinli/p/9979826.html事件分发是一个递归调用到过程,事件传到Activity,首先调用其dispatchTouchEvent方法,其会传递给ViewGroup处理,该ViewGroup会调用其dispatchTouchEvent方法,则会调用onInterceptTouchEvent方法,如果该方法返回TRUE拦截事件,则交给自身的onTouchEvent处理,如果该方法返回false不拦截,则继续传给View的di

2022-03-16 11:19:55 96

原创 Android 内部、外部存储

保存在内部存储路径下的文件是应用的私有文件,其余应用不能访问这些文件(除非拥有 Root 访问权限),很是适合保存用户无需直接访问的内部应用数据。当卸载应用后,保存在私有路径中的文件也会被删除。所以,不应该将那些应用卸载之后还保留的数据文件放在私有路径中。主要有如下几个经常使用的目录:files目录完整路径为:/data/data//files。String path = getFilesDir().getAbsolutePath();cache目录完整路径为:/data/data//

2022-02-15 16:15:30 1991

原创 Android数据库---Room、LitePal、GreenDao

Roomhttps://developer.android.google.cn/training/data-storage/roomapp/build.gradle中添加依赖声明。创建实体类,添加对应的注解。创建Dao接口,接口中的方法对应crud操作。创建继承自RoomDatabase的抽象类,并在类中创建数据库的实例。进行数据库的crud操作,要放在子线程中执行。实体类,对应数据库中的表:@Entity(tableName = "user_table")public class U

2022-01-26 14:17:38 4495

原创 Android项目中三种依赖的添加方式

添加本地依赖首先将所需的 jar 或者 aar 包放在libs文件夹下。方式1右击jar包,选择Add As Library,最后sync。方式2在app/build.gradle中添加本地依赖的声明:implementation files(‘libs/xxx.jar/aar’) 或者 implementation fileTree(includes: [‘xxx.jar/aar’], dir: ‘libs’),最后sync。方式3点击File—>Project Structure—

2022-01-25 14:27:38 5974

原创 Android常用多线程

Android中的四种线程池CachedThreadPool只有非核心线程,且总线程数量不固定,当任务到来时,有空闲线程,就立即交由该线程去处理任务,否则就立即创建新线程去处理该任务,保证第一时间执行任务。但空闲线程有超时机制,空闲超过60秒,就会被系统回收。适合执行量大耗时少的任务。FixThreadPoolFixThreadPool只有核心线程,并且数量固定的,也不会被回收。当所有线程都活动时,因为队列没有限制大小,新任务会等待执行。由于线程不会回收,FixThreadPool会更快地响应外界请

2022-01-25 10:53:27 2310

原创 集合2

Map集合Map集合的特点:1.键值对映射关系2.一个键对应一个值3.键不能重复,值可以重复4.元素存取无序Map集合的基本功能:V put(K key,V value) 添加元素V remove(Object key) 根据键删除键值对元素void clear() 移除所有的键值对元素boolean containsKey(Object key) 判断集合是否包含指定的键...

2020-04-21 16:09:48 120

原创 集合1

List集合特点:有索引可以存储重复元素元素存取有序遍历方式:普通for循环增强for循环迭代器方式特有方法:void add(int index,E element) 在此集合中的指定位置插入指定的元素E remove(int index) 删除指定索引处的元素,返回被删除的元素E set(int index,E element) 修改指定索引处的元素,返回被修改的元素...

2020-04-21 16:06:18 157

空空如也

空空如也

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

TA关注的人

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