分类

Android

深入探讨 Android 系统的核心架构与高级开发,聚焦四大组件(Activity、Service、Broadcast Receiver、Content Provider)的原理、生命周期管理和交互机制。从基础的组件构建与通信,到 Android Framework 层(如 AMS、WMS、PMS)的源码剖析和自定义扩展,提供详尽代码示例、调试技巧和性能优化策略。涵盖 JNI、AIDL、Binde

共 356 篇文章

UsageStatsManager统计应用使用情况
Android

UsageStatsManager统计应用使用情况

UsageStatsManager统计应用使用情况UsageStatsManager提供对设备使用历史记录和统计信息的访问,时间周期为days、weeks、months、years。可以帮助开发者了解用户在设备上使用应用程序的情况,包括应用程序的启动次数、使用时长等。1、权限使用UsageStatsManager需要权限:可以通过AppOpsManager检查是否拥有UsageStatsManag

2.4k
WebView打印前端Console日志
Android

WebView打印前端Console日志

WebView打印前端Console日志安卓开发中WebView是非常常用的控件,用来加载网页,涉及前端和客户端交互开发的时候需要查看网页打印的日志,这时候可以通过重写WebChromeClient类中的onConsoleMessage()方法打印网页中的Console日志:但有时候可能会有些厂商的ROM不显示Console日志,可以通过Webview与原生的交互来实现。首先定义一个类和方法,需要

2.2k
Android

Base64与图片相互转换

Base64与图片相互转换在Android开发中,我们经常需要用到图片转换为Base64字符串、Base64字符串下载转为图片的场景,以便在网络传输或保存到本地数据库中。Base64是一种用于传输8位字节码的编码方式,通过将二进制数据编码成文本格式,方便传输和存储。1、图片转Base64以Bitmap为例,Android中的大都图片都借助Bitmap来操作。将Bitmap转成Base64字符串:首

2.0k
Android

Android查看CPU使用情况

Android查看CPU使用情况使用adb shell dumpsys cpuinfo 可查看Android应用的cpu使用情况:结果说明(只了解了部分字段含义)第一行:表示最近1分钟、5分钟、15分钟的cpu平均负载;如果 1分钟load值 < 15分钟load值,说明cpu使用率在下降;如果 1分钟load值 >= 15分钟load值,说明cpu使用率还在上升,需要注意;如果是单核cpu,最大

2.6k
Android 15适配
Android

Android 15适配

Android 15适配去年的Android 14已经随着新款设备进入消费者手中。每年四月初又到了Android一年一度的大版本适配周期,Android 15开始新的计划。1、新增特性各手机厂商会从Google打patch补丁,不断升级自家的ROM。反过来Google会吸取各个OEM厂商的特性,添加到AOSP中,比如之前的深色模式、刘海屏等一些特性,原本只是各家ROM定制自己做的新feature,

2.7k
Android进入设置中应用对应的详情界面
Android

Android进入设置中应用对应的详情界面

Android进入设置中应用对应的详情界面有时候为了引导用户操作,例如手动赋予权限等,需要拉起应用对应的详情界面。在android.provider包中,系统提供了包括设置、联系人、短信等在内的诸多系统内置Provider,为开发者提供了许多方法。使用Settings类中的ACTION_APPLICATION_DETAILS_SETTINGS,源码中的描述如下:即可完成跳转系统设置里的应用详情界面

1.4k
Android

Android系统文件目录结构

Android系统文件目录结构Android系统目录结构,不管是系统开发还是应用开发,对文件系统目录都要有基本的认识,每个常见目录的作用及含义:/init 系统启动文件/systemapp 系统应用安装目录bin 常用的系统本地命令(二进制),大部分是toolbox的链接(类似于嵌入式Linux中的busybox)etc 系统配置文件,如hostsfont 字体目录framework Java平台

2.5k
Android

获取Apk的签名信息

获取Apk的签名信息篡改包名是常见的攻击手段,但修改签名是具有难度的。因此某些场景下对包进行签名校验,是安全的一种常规手段。1、使用keytools命令借助keytool工具可以查看Apk的签名,该工具在JDK的\jdk\bin目录下。可以查看到Apk的签名等信息:如果是未签名的Apk则是没有以上信息的,使用Android Studio编译出来的包含有默认签名。2、通过代码获取在Android中,

2.6k
Android

修改屏幕亮度

修改屏幕亮度使用付款码的时候会发现,打开付款码页面手机屏幕亮度会变为最亮,方便商户识别付款码。今天来了解一下如何改变手机的屏幕亮度。1、改变当前窗口的屏幕亮度修改Window中screenBrightness的值(0.0~1.0)亮度只保存在当前的Window,退出当前的窗口就会恢复原样。是主流应用采用的方法,不会影响其它应用的显示亮度。方法比较简单使用,简单几行即可实现改变窗口的亮度:应在界面推

1.6k
Android

Android中屏幕常亮的方法

Android中屏幕常亮的方法某些场景需要应用的界面保持常亮,当然只是设置在本应用内常亮,不影响系统或者其它应用的显示行为。简单了解一下Android中如何保持页面常亮的几种方式:1、给Window添加Flag向当前Window的flag添加FLAG_KEEP_SCREEN_ON,此方法最简单,不需要申请任何权限。FLAG_KEEP_SCREEN_ON在WindowManager中的定义如下:2、

2.0k
颜色矩阵ColorMatrix
Android

颜色矩阵ColorMatrix

颜色矩阵ColorMatrix1、ColorMatrix颜色矩阵ColorMatrix是一个用来表示三原色和透明度的4x5的矩阵。1.1、介绍将ColorMatrix表示为一个数组的形式如下:一个颜色则使用 [R, G, B, A] 的方式进行表示,所以矩阵与颜色的计算方式则为:从上述的公式可以看出,颜色矩阵的功能划分如下:a, b, c, d, e 表示三原色中的红色f, g, h, i, j

1.8k
Android

Android 安全:移除不必要的三方依赖权限

Android 安全:移除不必要的三方依赖权限平时开发过程中避免不了要使用一些三方依赖来实现我们的需求,但是有时三方申请的权限,我们并没有使用到,但是打包过程中又会合并到AndroidManifest.xml文件中,这就造成了权限滥用的风险。在App的下AndroidManifest.xml中加上 tools:node="remove",在打包时移除权限:最终打包的Apk里将不会有此权限。

1.8k
Android

LruCache缓存

LruCache缓存学过计算机操作系统的都应该指定LRU(Least Recently Used),LRU的意思就是近期最少使用算法,它的核心思想就是会优先淘汰那些近期最少使用的缓存对象。Android开发中经常要用到缓存,其中的三级缓存,主要就是内存缓存和硬盘缓存。这两种缓存机制的实现都应用到了LRU算法。Android应用缓存数据分有两种形式:①数据缓存:主要用于保存业务的数据,如接口的返回数

1.6k
Android

Android特有的数据结构:SparseArray

Android特有的数据结构:SparseArraySparseArray ,稀疏数组,是Android中特有的数据结构,从Android 1.0就有,主要目的是为了节省内存。SparseArray 的实现简洁,源码仅500余行,值得学习。1、SparseArray数据存储方式java中的HashMap是采用数组+链表存储(java1.8以后,链表超过8个采用红黑树存储)。而SparseArray

1.8k
Android

ContentObserver内容观察者源码解析

ContentObserver内容观察者源码解析一定要看看ContentObserver源码内部是如何实现观察者模式观察ContentProvider内容的。用它来观察我们感兴趣的ContentProvider是很有用的(见ContentProvider笔记)。1、注册先从ContentResolver注册ContentObserver的registerContentObserver()方法开始:

2.2k