组件
文章平均质量分 75
锐湃
这个作者很懒,什么都没留下…
展开
-
值得一看的Android广播分析好文
广播会发送到广播队列中不同集合。其中广播队列有三种类型,分别对应优先级从高到底:前台、后台、长广播队列类型。而广播又分三种:黏性广播、无序广播、有序广播。无序广播和有序广播的处理主要要发送广播的时候,而黏性广播则在广播接收者注册时候被处理。一个应用程序允许注册最大的广播接收者是1000个。广播之间的传递也要经历各种权限检查,所以广播不适合在应用间用于频繁的交互。值得一看的Android广播分析好文作者:新小梦链接:https://juejin.cn/post/7322156751818522661。转载 2024-08-09 10:19:51 · 17 阅读 · 0 评论 -
在代码中发送按键事件
在做一个项目中,遇到下面这样一个问题。项目主界面是TabActivity,每个子tab 都是一个acitivity。有个子tab中,点击注销用户,要退回到项目主界面默认的tab,相当于按返回键。解决办法如下:在这个子tab中写下面方法。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/u010213003/article/details/8979828/转载 2024-07-30 19:16:30 · 26 阅读 · 0 评论 -
movetasktoback的作用
如果设置为 `false`,无论 Activity 是否是任务的根,都会执行移至后台的操作。- 模拟主屏幕操作: 有时候,开发者希望提供一种方式,让用户能够退出应用,但又不完全关闭它,使得应用可以快速重启。这段代码通常会覆盖 `Activity` 中的 `onBackPressed()` 方法,以改变 Back 按钮的默认行为,使得应用退到后台而不是立即退出。- 这个方法不会影响 Activity 的生命周期,Activity 依然会按照正常流程调用 `onPause()`、`onStop()` 方法等。转载 2024-07-12 16:13:59 · 103 阅读 · 0 评论 -
退到桌面 moveTaskToBack
在上述代码中,我们首先在布局文件中添加了一个按钮,用于触发“退到桌面”的操作。然后在Activity中找到这个按钮,并设置了点击事件,在点击事件中调用了moveTaskToBack方法,将应用退到后台。通过以上步骤,你就可以成功实现“Android 退到桌面 moveTaskToBack”的功能了。2 在按钮的点击事件中调用moveTaskToBack方法,将应用退到后台。1 创建一个按钮,用于触发“退到桌面”的操作。转载 2024-07-12 16:12:39 · 99 阅读 · 0 评论 -
Activity Deeplink启动来源获取源码分析
mReferrer很容易通过重写context的getBasePackageName()被伪造,在使用时一定要小心。通过ActivityManageService获取的Uid是无法被伪造的,可以考虑使用Uid来转换PackageName。作者:vivo互联网技术链接:https://juejin.cn/post/7030977861691375629来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。转载 2024-07-12 10:30:14 · 65 阅读 · 0 评论 -
在Activity中获取调用者包名,以及如何通过伪造mReferrerr让Activity无法获取调用者的包名
但是在Activity中,我们是无法touch到Binder线程的。如果这个值是SystemServer中填充的,然后发送到App中的,那么可以认为无法伪造,但是如果这个值依赖于调用者的传入,那么很可能可以被伪造。可以看到,我们调用startActivity的时候,并没有传入callingPackage参数,但是当调到ActivityManagerService的startActivityAsUser方法的时候,却出现了callingPackage参数,所以,肯定是调用流程中间的某一步,加入了这个参数。转载 2024-07-12 10:23:08 · 98 阅读 · 0 评论 -
解决No Activity found to handle Intent
activity转载 2024-07-11 21:03:53 · 235 阅读 · 0 评论 -
Android14 开发之Broadcast延迟及Service常驻等新特性说明
通过以上步骤,您可以在 Android 13 中根据Intent的action启动服务,并确保服务在后台运行时不会被系统终止。使用前台服务可以确保服务的持久性,并且可以处理新的权限要求和行为变化。Android14 开发之Broadcast延迟及Service常驻等新特性说明。转载 2024-07-03 10:07:46 · 111 阅读 · 0 评论 -
如何根据包名启动app
本文介绍了两种根据包名启动App的方法:使用隐式Intent和使用包名构建启动Intent。通过这些方法,我们可以方便地启动其他应用程序,并根据需要传递参数或接收返回结果。在实际开发中,我们可以根据具体需求选择适合的方法来实现根据包名启动App的功能。©著作权归作者所有:来自51CTO博客作者mob649e8166858d的原创作品,请联系作者获取转载授权,否则将追究法律责任android如何根据包名启动app。转载 2024-06-05 11:22:26 · 476 阅读 · 0 评论 -
用IdleHandler进行性能优化
了解什么时候主线程被认为是空闲的至关重要。一般情况下,Android系统认为主线程在处理完所有消息后即处于空闲状态。IdleHandler通过这个定义,能够在保证不影响用户体验的前提下执行一些耗时的操作。// 没有消息,判断是否有IdleHandlercontinue;....// 执行IdleHandleri++) {try {if (!keep) {通过深度解析的原理和高级应用,让我们更好地利用这一工具进行性能优化。在实际项目中,灵活运用。转载 2024-04-09 15:19:02 · 63 阅读 · 0 评论 -
可以通过监听WifiManager的广播,来得知当WiFi的SSID(Service Set Identifier)变化时
在Android中,当WiFi的SSID(Service Set Identifier)变化时,可以通过监听。方法就会被调用,你可以在这里获取并处理新的SSID。这样,每当SSID变化时,转载 2024-04-09 14:00:29 · 80 阅读 · 0 评论 -
App接入Android指纹识别
Biometric Authentication 是一种使用面部或指纹识别进行用户认证的方式,这是保护敏感信息的方法之一。它对于需要用户每次打开应用都要进行认证的金融和医疗健康应用非常重要。转载 2024-03-18 17:04:59 · 162 阅读 · 0 评论 -
Serializable和Parcelable序列化权威指南
本文围绕与Parcelable展开了一系列高级疑难的面试问题,并提供了详细解答。了解并掌握这两种序列化方式的原理、优劣势以及适用场景对于Android开发者来说至关重要。必读!Android序列化权威面试指南,资深面试者的秘诀。转载 2024-03-06 10:15:38 · 54 阅读 · 0 评论 -
骚操作玩这么花?Android基于Act实现事件的录制与回放
在前文 ViewGroup 的文章中,我们知道了事件的伪造与保存,如何定制伪造事件时间轴,如何分发伪造事件,本文也是一个思路。整体思路基于前文 ViewGroup 的例子,还是把事件用对象封装起来,只是我们封装的对象换成了 MotionEvent ,并且不需要修改内部的操作时间了,我们用事件对象的 time 时间来制作伪造事件触发的时间轴。这样对于事件的录制我们就能直接通过 Activity 的事件分发 dispatchTouchEvent 中直接保存我们的事件对象了。//事件。转载 2024-02-27 19:39:45 · 226 阅读 · 0 评论 -
HandlerThread要记得quit
HandlerThread 属于老生常谈的问题了,它本质上一个自带Loop消息循环的Thread,「就是个线程」有时候我们自己也希望有个类似主线程类似的消息队列帮助我们处理消息,它就是做这个事情的。跟主线程有着异曲同工之妙,唯一的区别就是 主线程loop队列不能退出,它是随时创建随时关闭退出。奥妙就在下面红框的2个代码中,网上文章多如牛毛,这里就不赘述了。转载 2024-02-23 13:58:21 · 131 阅读 · 0 评论 -
10个Android LaunchMode知识点
在Android开发中,LaunchMode是一个综合性的话题,涉及到Activity的生命周期、任务栈的管理以及用户体验等多个方面。通过深入理解各种LaunchMode的特性,能在面试中展现出你对Android开发的深刻理解。希望本文对你在LaunchMode面试技巧的准备中有所帮助。掌握这10个Android LaunchMode问题,面试轻松搞定。转载 2024-02-21 10:52:58 · 215 阅读 · 0 评论 -
Android14 适配之——targetSdkVersion 升级到 34 需要注意些什么
此问题是因为一个 Kotlin 库改变了运行时的行为,即在执行 Class.forName("java.lang.ClassValue") 是否会返回一个 class 而引发的,如果应用是针对没有 java.lang.ClassValue 的旧版本开发的,那么这些优化会从 java.lang.ClassValue 派生的类中删除 computeValue方法。再说回前台服务,上述每个前台服务类型所需要的权限是不一样的,并且这些权限都被定义成了普通权限,在默认情况下是已经授予的,用户不能撤销这些权限。转载 2024-01-24 15:12:33 · 2590 阅读 · 0 评论 -
Lifecycle 深度解剖:三大类、五种状态、七大事件全面解读
Lifecycle是 Android 系统中一个重要的概念,它定义了 Activity 和 Fragment 在其生命周期中的各个状态,以及在每个状态下可以执行的操作。理解Lifecycle的实现原理和使用技巧,对于 Android 开发人员来说非常重要。Android Lifecycle 深度解剖:三大类、五种状态、七大事件全面解读!转载 2024-01-17 17:42:18 · 102 阅读 · 0 评论 -
用“存储空间管理”来优化用户体验
app安装后要恢复到安装时候的状态有2种方式,卸载重新安装或者打开设置找到APP的应用管理-> 清除数据 -> 清除全部数据/清除缓存。而在日常使用中发现有个特别的情况,在TG和bilibili的应用在选择清除数据时候没有清除全部数据的选项,而是管理空间(在piexl7Pro 上还是clear data)点击后会打开APP自己的一个缓存管理定制页面,在这里可以自由的清理一些开发者允许的数据。用户在感觉手机空间被APP占用较大时候,会查看APP的应用占用磁盘详情,可以在设置的应用管理找到当前APP然后查看。转载 2023-12-13 14:34:09 · 102 阅读 · 0 评论 -
在Android 13上灵活请求权限的方式
Android 13为我们提供了更灵活的方式来请求运行时权限。通过使用依赖注入和组合,我们可以将权限请求的逻辑封装在一个单独的类中,使代码更加模块化和可测试。在这篇文章中,我们首先了解了官方Android文档中有关请求运行时权限的最佳实践。然后,我们看了一些示例代码,展示了如何在特定屏幕中请求权限。然而,我们意识到将权限请求逻辑与特定屏幕的视图模型解耦是更好的做法。为此,引入了依赖注入和组合的概念。创建了一个名为PermissionsManager的类,它负责处理权限请求。转载 2023-12-07 19:42:22 · 648 阅读 · 0 评论 -
Lifecycle 库新旧版本使用姿势对比
以上就是老的使用方式了,现在已经不推荐使用,@OnLifecycleEvent 注解方式也标记为@Deprecated了,执行结果很简单就不再贴出来了,有兴趣的可以看开头的文章介绍。在旧的实现方式中,LifecycleObserver的最终实现类是ReflectiveGenericLifecycleObserver(见上图),当调用其对应的onStateChanged()方法后,是通过反射找到对应的@OnLifecycleEvent 注解并调用对应的方法的。回顾Lifecycle的用处。转载 2023-11-23 11:24:14 · 272 阅读 · 0 评论 -
APP安装后不在桌面显示图标的应用场景举例和实现方法
最近在为公司做一款车联网的产品,由于公司本身擅长于汽车解码器的研发,所以该产品的诊断功能的实现除了使用目前市面上车联网产品中大量使用的OBD协议外,还会使用一些专车专用协议去实现一些特殊的诊断功能,如升窗降窗、保养归零、读TPMS数据流等。公司的想法是把这些专车专用的诊断当成一种付费服务提供给用户,即用户在免费使用基于OBD协议实现的诊断功能外,若想使用专车专用协议实现的某个特殊功能则需要按每个功能多少钱的形式付费(本人不太赞成靠这种方式赚钱,觉得还是免费的好)。转载 2023-11-20 13:16:59 · 462 阅读 · 0 评论 -
Fragment 要你何用?2.0版本
在之前的文章里有分析过Activity、Fragment、View之间的关联,也简单分析了Fragment的原理。转载 2023-11-17 11:29:50 · 97 阅读 · 0 评论 -
前台服务适配指南
Android 10引入了属性,用于帮助开发者更有目的地定义前台服务。这个属性在Android 14中被强制要求,必须指定适当的前台服务类型。以下是可选择的前台服务类型:1.camera: 相机应用。2.: 与连接的设备相关的应用。3.dataSync: 数据同步应用。4.health: 与健康相关的应用。5.location: 位置相关的应用。6.: 媒体播放应用。7.: 媒体投影应用。8.microphone: 麦克风相关的应用。9.phoneCall: 电话呼叫应用。10.转载 2023-11-13 15:15:44 · 2465 阅读 · 0 评论 -
使用 Kotlin实现Android 后台服务
在这个全面的指南中,我们理解了后台服务的重要性以及在维持应用流畅度方面的作用。有了这些知识,开发者可以创建高效且用户友好的后台服务,从而提供卓越的应用体验。当你深入 Android 开发领域,精通后台服务的艺术无疑会提升你的应用创建能力。这就是 Android 后台服务,作为应用开发的基石,扮演的角色。在这篇文章中,我们将探索 Android 后台服务,深入研究它们的重要性,使用 Kotlin 的实现方式,以及保证最优性能和用户体验的最佳实践。这个类将作为你的后台服务的基础。优化你的服务以最小化资源消耗。转载 2023-10-31 20:16:57 · 638 阅读 · 0 评论 -
OnBackPressed 方法被弃用,那么使用什么替代方法?
如果你将任何应用程序升级到 targetSdk 33,可能会注意到在 Activities 中的 OnBackPressed() 方法已经被弃用了。转载 2023-10-25 17:43:05 · 3259 阅读 · 0 评论 -
从零开始实现一个兼容版本的Android文件选择器
此项目和之前发布的项目有些不同,之前都是基本的功能,不是基于 Activity 页面实现的,而类似文件选择,图片选择,除了功能的实现还需要处理 UI 相关的配置。在前面的一文中我就想把逻辑做一下封装,做成开箱即用的文件选择器,本来这功能是项目中自用的,UI 等都是自有的,如果要做开源出去,那么就要抽取功能与 UI 逻辑,设置可配置选项。分解一下实现步骤,如何自定义一个文件下载器呢?这样差不多就能完成一个基本的操作文件选择框架了。转载 2023-10-25 13:47:29 · 1889 阅读 · 0 评论 -
WiFi热点状态监听
WiFi热点状态监听转载 2023-10-19 15:44:59 · 91 阅读 · 0 评论 -
稳定的 Glance 来了,安卓小部件有救了!
今天所讲的Glance其实也是基于Compose的,由此可见,Google 现在对Compose发力非常足,如果大家想系统地学习Compose的话,可以购买我的新书《Jetpack Compose:Android全新UI编程》进行阅读,里面有完整的 Compose 框架供大家学习。京东购买地址当当购买地址玩安卓 Github:https://github.com/zhujiang521/PlayAndroid作者:Zhujiang。转载 2023-10-18 14:16:52 · 272 阅读 · 0 评论 -
网络状态变化监听 -- 结合registerNetworkCallback和广播(kotlin)
AndroidAndroid针对网络状态变化的监听,在应用内我们通用需要监听设备网络状态的变化,作出相应的业务处理,需要一个方便的、全局的监听实现。。 针对不同设备的系统版本,使用不同的API方法实现; 注意使用广播监听网络状态在高版本的适配问题;转载 2023-10-17 13:49:48 · 1014 阅读 · 0 评论 -
原生 Picture in Picture 画中画功能避坑指南
Android PiP 模式也称之为画中画模式,允许用户在使用应用程序的同时,在屏幕的一角或一侧浮动显示另一个应用程序或视频。这使得用户可以同时进行多项任务,而不必切换应用程序或中断正在进行的任务。如下所示:(注:B站的 PiP 是自定义实现的,未使用系统 PiP)2。转载 2023-10-11 13:57:29 · 678 阅读 · 0 评论 -
粘性广播主动获取当前值
android粘性广播主动获取当前值转载 2023-10-10 10:19:13 · 38 阅读 · 0 评论 -
taskAffinty使用详解
taskAffinity 是用来指示 Activity 属于哪一个 Task 的,task可以理解为任务栈。默认情况下 Activity 的 taskAffinity 是包名。转载 2023-10-06 13:38:43 · 108 阅读 · 0 评论 -
Android应用程序设置让程序不出现在近期任务列表中
最近一直在学习Android系统,这里做一些Android的知识总结,帮助自己和需要的人提高。如果大家不想应用出现在近期任务列表中,可以设置成true,不知道有没有方法可以让用户自己选择。今天来个简单的:应用程序设置是否出现在近期任务列表中。转载 2023-10-06 10:39:27 · 657 阅读 · 0 评论 -
Android TaskAffinity解析
Taffinity是指Activity的归属,Activity与Task的吸附关系,也就是该Activity属于哪个Task。一般情况下在同一个应用中,启动的Activity都在同一个Task中,它们在该Task中度过自己的生命。每个Activity都有taskAffinity属性,这个属性指出了它希望进入的Task。转载 2023-10-06 10:31:16 · 436 阅读 · 0 评论 -
activity生命周期:需要做什么和不需要做什么
当你开发Android应用时,理解activity生命周期是引人入胜的一步。activity是你应用的一个重要组件,你需要理解它如何创建、开始、恢复、暂停、停止和销毁。让我们深入分析一下,看看在各个阶段我们需要做什么,以及需要避免的错误。转载 2023-08-11 14:37:59 · 131 阅读 · 0 评论 -
一个App到底会创建多少个Application对象
群友的想法是,java中获取的都是虚拟内存地址,虚拟内存地址相同,不代表是同一个对象,必须物理内存地址相同,才表示是同一块内存空间,也就意味着是同一个对象,物理内存地址和虚拟内存地址存在一个映射关系,同时给出了java中获取物理内存地址的方法Android获取对象地址,主要是利用Unsafe这个类来操作,这个类有一个作用就是直接访问系统内存资源。结论2为什么说至少创建2个,因为我在集成了JPush的商业项目中测试发现,JPush创建的进程跟我自己创建的进程,Application地址是不同的。转载 2023-06-20 14:25:17 · 114 阅读 · 0 评论 -
使用 Sharesheet分享Android 应用链接
使用 Sharesheet 进行丰富的链接共享Android App Links 允许您的应用程序打开网页链接,而不是使用网络浏览器。处理这些深层链接已在我们的《深层链接入门课程》中介绍过。除了能够打开深层链接外,您的应用程序还应能够创建和共享指向特定内容的深层链接。在安卓中,分享应用内的链接内容是一项重要的操作。链接分享使您的应用程序及其用户能够进行协作、交流、社交网络等活动。所有这些活动都能增加用户对应用程序的参与度,并充分发挥您的应用程序的深层链接支持。转载 2023-06-19 16:40:05 · 475 阅读 · 0 评论 -
Android 14 之返回界面升级:预览目标界面 + 全新返回箭头
在支持预览返回的目标界面功能之前,确实非常有必要借助返回箭头来提示返回手势的进度。但一旦这个预览功能开发完毕,这个箭头则显得不那么必须,因为判断目标界面出现的多少即可,就像 iOS 那样。但话说回来,这个箭头并不需要 App 适配样式,全部由系统的 SystemUI 完成,不会增加开发者的负担。所以,提供依据系统 Theme 改变的返回箭头算是 Android 返回导航的一大特色。期待包括预览目标画面功能在内的完整 Back 导航功能早日发布!参考资料。转载 2023-06-16 10:32:50 · 1109 阅读 · 0 评论 -
实现监听音量的变化
想实现全局监听的话,可以在在一个app生命周期内都存在的Context里去监听,比如MainActivity。2. 该监听针对当前Activity,不同的Ac要重新重写onKeyDown函数。系统音量变化的时候会发送广播,监听这个就行,音量变化的action是。最近项目中涉及到了音量监听然后作出改变的需求,特此mark一下。1. 容易消耗音量键改变事件(返回false有时也没用),实测。3. 由第二点可知,无法做到整个应用范围监听。具体的见代码:(kotlin版本)转载 2023-06-14 17:22:15 · 1108 阅读 · 0 评论