
安卓
文章平均质量分 65
_蓝橙
日拱一卒无有尽,功不唐捐终入海
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
音视频学习:使用NDK编译FFmpeg动态库
下,就是把上面编译生成的整个 include 文件夹复制进去,不用在意v7a还是v8a,头文件接口都是一样的。可能不包含全部,遇到报错缺少的工具链的,把报错抛给AI,按提示下载即可:)ffmpeg 库的头文件时,要使用。将 FFmpeg 头文件复制到。包起来,不然会报错!在主界面 打印版本号。原创 2025-05-12 16:44:11 · 529 阅读 · 0 评论 -
安卓触摸事件分发机制分析
🎯 一句话总结:触摸事件(TouchEvent)会从Activity层开始,按从外到内的方式传递给每一个 ViewGroup/View,直到某个 View消费(consume)它,事件传递就会停止。📌 事件分发三个关键方法方法名所在类作用说明所有 View/ViewGroup事件分发入口,决定是否继续向下传递仅 ViewGroup是否拦截事件,阻止传递给子 View所有 View/ViewGroup事件的最终处理者(消费者)DecorView是一个应用窗口的根容器,它本质上是一个。原创 2025-04-27 16:44:35 · 757 阅读 · 0 评论 -
深入理解 Android Handler
Handler是 Android 消息机制的基础组成部分。通过对 Handler、Looper、MessageQueue 之间关系的理解,我们可以更深入掌握 Android 的线程模型与 UI 更新流程。由于本人能力有限,并没有对Handler进行过度深入全面了解,比如同步屏障等,如果文章内容解读有误,还望不吝赐教。原创 2025-04-18 15:02:06 · 1049 阅读 · 0 评论 -
深入剖析Java中ThreadLocal原理
看完你应该对有个全新的认识了,虽然概念很容易理解,但我们知其然更要知其所以然。通过现象看本质。原创 2025-04-15 18:37:19 · 656 阅读 · 0 评论 -
安卓性能调优之-掉帧测试
掉帧指的是某一帧没有在规定时间内完成渲染,导致 UI 画面不流畅,产生视觉上的卡顿、跳帧现象。原创 2025-04-14 13:46:57 · 753 阅读 · 0 评论 -
重学 Android 自定义 View 系列(十二):环形SeekBar剖析
一个自定义的圆形 SeekBar,类似于传统的 SeekBar 但采用了圆形轨迹。最近被一个网友私信问有没有类似效果的View,因为前面做过几个环形进度条,这个不就加个触摸效果么,以为不算很难,但深入了解后,才发现事情并没有那么简单…你需要具备的知识:三角函数正弦余弦计算、反三角函数、角度弧度区别…该View 由绘制圆形轨道(进度条):支持背景轨道和进度轨道两层绘制和背景圆环缓存。支持触摸交互:用户可以通过手指拖动控制进度。自定义进度范围:允许设置最小值、最大值以及当前进度。进度变化监听。原创 2025-04-11 14:05:33 · 730 阅读 · 0 评论 -
安卓性能调优之-检测应用启动速度
宏基准测试主要关注整个应用程序或大部分应用功能的性能表现。它通常测试的是较大的操作或完整的业务流程,比如用户登录、数据加载、界面渲染等。原创 2025-04-09 15:44:02 · 1013 阅读 · 0 评论 -
分析android :The binary version of its metadata is 1.8.0, expected version is 1.5.1.等系列问题
当打包项目时会出现标题错误,有时候会弹出此错误但不影响打包,有时候会导致直接打包失败但可以直接在AS中安装,很是头大。以我报错内容为例:【android其元数据的二进制版本为1.8.0,预期版本为1.5.1】,刚开始以为项目中有使用了的版本呢,结果一顿搜索下来并未发现 此版本的任何信息?心里一万个草泥马狂奔。开始百度~之前遇到这种问题,大都是咔咔一顿复制粘贴,又是强制使用某个Kotlin版本又是不影响打包就忽略报错,想解决又心有余而力不足,事实证明,只要慢慢分析,就没有解决不了的问题,哈哈,再会!原创 2024-11-22 16:57:37 · 1210 阅读 · 0 评论 -
安卓属性动画插值器(Interpolator)详解
插值器(Interpolator)是用来控制动画执行速率的工具。在安卓的动画框架中,插值器主要用于指定动画从开始到结束的时间进度曲线。简单来说,插值器控制了动画的“快慢”,即时间与进度之间的关系。安卓提供了一系列内置的插值器,可以帮助开发者更好地控制动画的节奏,开发者也可以通过自定义插值器来实现更独特的效果。原创 2024-11-09 17:06:34 · 2274 阅读 · 0 评论 -
Android之Linux命令速查
谨以此篇文章记录学习Linux命令。原创 2024-11-04 11:39:29 · 467 阅读 · 0 评论 -
在Android中,将 .cpp 文件编译成共享库(.so 文件)
一般在AS你新建C++项目会默认如下结构目录,要是用现有项目,你也可以手动创建。点击 Android Studio 顶部的。文件中,确保添加 CMake 的支持。的文件,该文件包含编译共享库的指令。,因为在JNI开发中,看到过它的影子。在 cpp 文件夹中创建一个名为。过时了,一般在老项目中比较常见。按钮,确保你的项目能够识别。在 app 目录下的。原创 2024-11-01 18:17:45 · 1206 阅读 · 3 评论 -
一个简易的并行任务调度器
当你需要在程序中处理大量同类型的耗时任务,并且需要监听每个任务的工作状态和任务的编号,能及时响应并处理错误,而且需要所有任务都执行完毕自动通知时,那么这个任务调度器就非常适合你!一个用Kotlin编写简易的串行任务调度器可以根据你的需求自由定义线程池最大线程数资源自动管理,超时自动释放资源,新加任务自动创建线程池。自定义超时时间,可以延迟线程池资源释放,等待新任务到来,合理利用。原创 2024-09-18 11:25:47 · 513 阅读 · 0 评论 -
一文搞懂Android AIDL
AIDL(Android Interface Definition Language)用于在Android应用中实现进程间通信(IPC)。它允许不同应用或服务间的数据传递和方法调用,确保不同进程间能够相互访问和操作。通过AIDL,开发者可以定义一个接口,然后在服务端和客户端实现这个接口,实现跨进程的交互。背景上,AIDL主要解决了Android系统中的进程隔离问题,使得不同应用或进程能够安全有效地共享数据和功能。原创 2024-09-09 23:26:55 · 8510 阅读 · 3 评论 -
安卓将子模块打aar包,并将其远程依赖打包进去
这时你会发现aar包并不大,甚至只有几十kb,如果你的子moudle 没使用第三方依赖的话,你会发现使用时没什么问题,如果有第三方依赖的话,它还是不大,甚至编译期也不会报错 ,但你运行时就会报错依赖找不到。如果要在项目中依赖的话,确实没什么问题,因为它如果依赖了别的文件的话,会自动下载的,而打包成aar文件它就不会下载了,这时候就缺少了相关文件,怎么办呢?代码写的,好家伙,源码的和说明文档的写法不一样,懵了,就试着搞了一下,编译通过🤭,如过你照着使用文档弄,可以通过的话就忽略下面代码把!原创 2024-08-03 17:03:09 · 1613 阅读 · 0 评论 -
Android 生成 AAR 包
当我们需要在 Android 项目中引用第三方库或模块时,常常会使用 AAR(Android Archive)包。AAR 包是一种包含了编译后代码、资源文件和清单文件等的二进制文件。原创 2024-06-27 17:19:19 · 1987 阅读 · 0 评论 -
使用 ADB 查看 Android 设备的 CPU 使用率(详解)
希望这篇文章对你在 Android 开发过程中监控 CPU 使用率有所帮助。原创 2024-06-26 15:43:45 · 13839 阅读 · 0 评论 -
Android Room数据库使用介绍
Room是Google提供的Android架构组件之一,旨在简化数据库操作。它是SQLite的一个抽象层,提供了更易用和安全的API。// tableName 指定了数据库中对应的表名为 "users"。如果不指定,默认使用类名作为表名// 使用默认值 0,autoGenerate = true 表示自动生成主键// 如果不使用 @ColumnInfo 注解,默认情况下 Room 将使用属性名作为数据库中的列名。原创 2024-06-14 12:07:38 · 2054 阅读 · 0 评论 -
聊聊App在安卓设备中所使用的内存
文章用来记录及分享本人对安卓程序中内存使用的个人见解,如有错误 不吝赐教。先简单浏览下面代码,看看对它们是否熟悉👇${${在开发安卓应用时,内存管理一直是一个关键的考虑因素。良好的内存管理不仅可以提高应用的性能,还能避免内存泄漏和崩溃,由于项目所需,特来恶补相关知识。原创 2024-06-07 18:11:05 · 900 阅读 · 0 评论 -
在Android中使用 MQTT 服务实现消息通信
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级的、基于发布/订阅()模式的通信协议,最初由 IBM 在1999年开发。它设计用于在低带宽、不稳定的网络环境下进行通信,适用于物联网(IoT)和机器对机器(M2M)通信。通过 MqttAndroidClient 和 MqttConnectOptions 初始化 MQTT 客户端。配置 MQTT 客户端的连接选项,包括用户名、密码、自动重连、清除会话、超时设置和心跳包发送间隔等。原创 2024-06-07 16:33:58 · 1777 阅读 · 0 评论 -
无法加载类‘org.gradle.api.publication.maven.internal.MavenPomMetaInfoProvider‘
【代码】无法加载类'org.gradle.api.publication.maven.internal.MavenPomMetaInfoProvider‘原创 2024-05-30 10:17:45 · 1229 阅读 · 0 评论 -
在Android中解析XML文件并在RecyclerView中显示
定义一个数据类Item和一个RecyclerView的适配器ItemAdapter。原创 2024-05-29 17:57:14 · 736 阅读 · 1 评论 -
记一次安卓“Low on memory“崩溃问题
最近再调人脸识别算法相关demo,发现调试期间总是偶发性崩溃,捕获不到异常的那种,看日志发现原因是,一开始还疑惑 App内存不够应该是OOM啊,怎么会出现这种问题,百思不得其解,直到我打开了 Android studio中的Profiler不要好奇为什么这么频繁GC,因为不GC我的程序才不正常。最后提醒一下,大家记得处理好子线程异常情况呀,拜拜ヾ(•ω•`)o。原创 2024-05-25 16:53:54 · 637 阅读 · 0 评论 -
一个用Kotlin编写简易的串行任务调度器
灵活性:允许动态添加任务,并根据任务负载需要创建或关闭执行器,从而管理执行器的生命周期。单线程限制:当前实现使用单线程执行器,这意味着任务是顺序执行的,而不是并行执行。这可能是CPU密集型任务的瓶颈。原创 2024-05-14 10:39:43 · 756 阅读 · 0 评论 -
在安卓应用中实现Socket通信:创建服务端和客户端
此片文章用来记录学习,方便大家拿来即用,知识点不多,注释已经尽可能详细了,收工,下班!原创 2024-05-09 19:00:36 · 903 阅读 · 0 评论 -
Android 生成Excel文件保存到本地
本文用来记录在安卓中生成Excel文件并保存到本地操作,在网上找了好久,终于找到一个可以用的,虽然代码已经很老的,但亲测可用!格式有问题,直接用的话会导致文件生成不成功,记得修改一下!可以下载下来修改直接用,该项目主要是依赖一个叫。代码很简单没什么解释的,关键点就是创建。需要注意下原项目传的。原创 2024-03-22 17:37:54 · 851 阅读 · 0 评论 -
cannot access an invalid/free’d bitmap here!
我出现这个问题的原因是bitmap 显示在dialog 上面,而在这个Dialog还未消失时,就调用 bitmap.recycle() 回收bitmap 造成的。解决办法就是在Dialog 设置 setOnDismissListener 监听,消失的时候调用。之前看到这种崩溃日志的时候,我都要崩溃了,还好里面有关键信息,可以帮助排查。所以 所以,一定确保bitmap不再使用,再去回收它。原创 2023-07-19 19:10:34 · 777 阅读 · 0 评论 -
Android 选择联系人并返回手机号等信息(适配安卓11+)
【代码】Android 选择联系人并返回手机号等信息(适配安卓11+)原创 2023-06-13 16:04:01 · 2593 阅读 · 0 评论 -
一文读懂Activity、Fragment和Service的生命周期
了解不同组件的生命周期有助于开发人员更好地掌握应用程序的行为,从而优化应用程序的用户体验和性能。例如,当用户旋转设备时,Activity 会重新创建,因此开发人员需要保存活动状态并在必要时还原它们。类似地,当内存不足时,系统可能会销毁 Activity、Fragment 和 Service,因此应用程序需要能够正确地处理这种情况,以避免崩溃和数据丢失。理解生命周期还有助于开发人员有效地管理资源。例如,使用 Service 可以在后台操作,而无需活动存在。原创 2023-05-24 14:36:01 · 1022 阅读 · 0 评论 -
关于安卓11 sdk30 分区存储的一些适配
targetsdk = 29 (安卓10)可以在清单文件中 application 标签加上android:requestLegacyExternalStorage=“true”禁用分区存储,就可以正常使用老存储功能了targetsdk ≥ 30 (安卓11+)此时禁用分区存储 也没啥用了,强制开启分区存储适配内部存储:外部存储:缓存文件:媒体文件:查询可用内存:相关细节详见官方:访问应用专属文件 | Android 开发者 | Android Developers (google.cn)原创 2022-12-06 18:13:18 · 3887 阅读 · 0 评论 -
安卓EditText InputType格式
【代码】安卓EditText InputType格式。转载 2022-11-22 16:30:48 · 346 阅读 · 0 评论 -
自定义View - Paint
介绍Paint(画笔)负责在Canvas(画布)上画出各种图形常量或不过并不建议使用setFlags方法,这是因为setFlags方法会覆盖之前设置的内容构造方法公开方法(常用)内部类Style指定绘制的图元是否被填充,描边或两者均有(以相同的颜色)。Cap指定了描边线和路径(Path)的开始和结束显示效果。Join指定线条和曲线段在描边路径上连接的处理。...原创 2022-08-01 12:55:53 · 540 阅读 · 0 评论 -
记一次 android studio 4.2以上版本要求jdk 11运行环境问题
找到图片里的路径,打开相应文件,把1.8的路径改为你最新的jdk路径就行了。原创 2022-07-20 14:13:54 · 3212 阅读 · 0 评论 -
谈谈项目中的内存泄露
提示以下是本篇文章正文内容,下面案例可供参考1.内存泄露就一句话,长生命周期对象持有短生命周期对象,造成内存不可被回收。2.上面没写Handler导致内存泄露,是因为在项目中真不是那么容易写出来的,写Android听过最多的就是Handler导致内存泄露,就算写出来编译器也给你报一片黄,这个应该是每个安卓开发者都会留意的地方3.出现问题往往是使我们放松警惕的地方,其实编码中稍加留意,上面问题都是可以避免,最后祝大家写代码永远没有bug。你浸淫于程序的迷城,坚持心中的梦想。...原创 2022-07-18 20:10:57 · 575 阅读 · 0 评论 -
安卓自定义View - 基础
自定义View的最基本的三个方法分别是View在Activity中显示出来,要经历测量、布局和绘制三个步骤,分别对应三个动作measure、layout和draw。测量onMeasure()决定View的大小;布局onLayout()决定View在ViewGroup中的位置;绘制onDraw()决定绘制这个View。提示以下是本篇文章正文内容,下面案例可供参考以上就是自定义view的基础内容,本文仅仅简单介绍了自定义view的执行流程,仅供参考,如有错误,不吝赐教。https。......原创 2022-07-17 16:56:08 · 728 阅读 · 0 评论 -
ListView 的getView方法被频繁调用问题
废话少说,没有标题## 出现的原因分下面几种:项目1因ListView的宽度或高度设为了wrap_content,导致系统需要不断地测量。解决:固定宽高设个具体值,或设置match_parent,或fill_parent,因情况不确定,没有标准答案,这几个可以都试试。项目2父布局的宽度或高度设为了wrap_content,再加上ListView 宽高更不确定。解决:一般只固定宽高,ListView再根据(1)试试就行了。如果父布局是FrameLayout 好像给他具体宽高也没用,我的是把原创 2022-01-18 10:09:04 · 2161 阅读 · 0 评论 -
Fatal signal 11 (SIGSEGV) at 0x0000130f (code=1), thread xxx (Thread-xx)
导致应用程序崩溃问题分析与解决:--复现--分析--解决最后先展示与问题相关的代码片:09-04 13:26:32.826 F/libc ( 572): Fatal signal 11 (SIGSEGV) at 0x0000130f (code=1), xxxx 844 (Thread-46)09-04 13:26:32.936 I/DEBUG ( 103): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***原创 2021-09-04 16:48:30 · 377 阅读 · 0 评论 -
Android Intent打开指定网页【问题与方法】
方法 一.Intent intent; PackageManager packageMgr = getPackageManager(); intent = packageMgr.getLaunchIntentForPackage("com.android.chrome"); intent.setPackage(null); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CAT原创 2021-08-18 10:08:29 · 1317 阅读 · 0 评论 -
java.lang.IllegalArgumentException: Receiver not registered:
问题:广播接受器没有注册;复现:在onCreate()中注册广播,在onStop()中进行反注册,在该Activity中,设备进入屏保状态 执行onStop(),此时广播已经被反注册,点击屏幕回到界面,不再执行onCreate(),如果再次进入屏保界面此时就会产生异常。解决:Receiver注册和反注册 放在onResume和onPause中,这两个过程肯定会成对出现,能避免此异常发生。...原创 2021-05-31 17:17:39 · 1785 阅读 · 1 评论 -
Long monitor contention with owner Timer-90
主线程卡死,安卓设备控件仅有点击效果原因之一:定时器Timer 不用时没有及时销毁,反复创建,Timer里的代码高并发解决: if(timer != null){ if(task != null){ task.cancel(); } timer.cancel(); timer.purge(); timer = null; }tim原创 2021-05-12 15:57:34 · 2104 阅读 · 2 评论 -
Error:No resource identifier found for attribute ‘directBootAware‘ in package ‘android‘
build.gradle里面的sdk版本号太小了加粗文本android:directBootAware=“true” 属性安卓7.0才支持就是sdk最小需要24android { compileSdkVersion 25 buildToolsVersion "30.0.0"原创 2021-04-22 18:22:54 · 319 阅读 · 0 评论