首页
学习
活动
专区
圈层
工具
发布

Android面试题大全

一个 Android 应用必须通过 Activity 来 运行 和 启动,Activity 的生命周期交给系统统一管理。...详细的进程优先级划分如下: 前台进程:应用程序存在Activity正位于前台,可见并可控 可见进程:应用程序存在Activity处于局部可见状态,即局部可见却不可控 服务进程:应用程序存在正在运行的...也可以调用IntentFilter 对象的 setPriority() 进行设置),被接收者依次接收广播。如:A 的级别高于 B,B 的级别高于 C,那么,广播先传给A,再传给B,最后传给C。...(只是拿阿里打个比方,其实BAT系都差不多) 白色保活 // 白色保活 白色保活手段非常简单,就是调用系统api启动一个前台的Service进程,这样会在系统的通知栏生成一个Notification...那么如何利用系统的漏洞呢,大致的实现思路和代码如下: 思路一:API 启动前台Service时直接传入new Notification(); 思路二:API >= 18,同时启动两个id相同的前台

2K50

Android 12的行为变更和版本兼容思路

前台服务通知延迟 为了为Android 12上的短期运行的前台服务提供简化的体验,对于某些前台服务,系统可以将前台服务通知的显示延迟10秒。此项更改使短期任务有机会在其通知出现之前完成。...隐私 Netlink MAC地址限制 Android 12进一步限制了所有非系统应用程序对设备MAC地址(不可重置的标识符)的访问,无论目标API级别如何。...表现 前台服务启动限制 除少数特殊情况外,以Android 12为目标的应用程序无法在后台运行时启动前台服务。如果应用程序在后台运行时尝试启动前台服务,则会发生异常(少数特殊情况除外)。...考虑在您的应用程序在后台运行时使用 WorkManager安排和开始工作。 要了解有关您的应用如何受到影响以及如何基于这些更改来更新应用的更多信息,请阅读有关前台服务启动限制的指南。...无法从服务或广播接收者创建Notification trampolines 当用户与通知交互时 ,某些应用程序会通过启动应用程序组件来响应通知点击,该组件最终会启动用户最终看到并与之交互的活动。

6.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 13 适配指南

    13 里增加了通知的运行时权限」,其中 Android 13 (33) 的通知会根据正在运行的应用程序的目标 API 级别进行不同的处理,「不过不管应用程序的目标API级别如何,Android 13...12L(API 级别 32)或更低版本为目标平台;当应用程序创建其第一个通知渠道时,系统将显示权限对话框; 如果是现有应用更新,程序的目标 API 级别为: 以 Android 13 (33)为目标平台...前台服务 (FGS) 任务管理器 Android 13 的新前台服务( Foreground Services:FGS)任务管理器显示当前运行前台服务的应用程序列表,此列表称为活动应用程序,可以通过下拉通知抽屉并点击启示来访问...❞ image.png ❝注意:如果系统检测到你的应用长时间运行某项前台服务(在 24 小时的时间段内至少运行 20 小时),便会发送通知邀请用户与 FGS 任务管理器进行互动,详见:https://...”来完成他们想要在下次应用启动前完成的任何工作。

    6.4K31

    Android进程与线程

    这样做的好处是 Android 应用程序进程之间不会相互影响,也就是说,一个 Android 应用程序进程的意外终止,不会影响到其他的应用程序进程的正常运行。...在执行一个程序时,它会创建一个进程,来执行应用程序,并且伴随着资源的分配和释放。...它是利用系统的漏洞来启动一个前台的Service进程,与普通的启动方式区别在于,它不会在系统通知栏处出现一个Notification,看起来就如同运行着一个后台Service进程一样。...这样做带来的好处就是,用户无法察觉到你运行着一个前台进程(因为看不到Notification),但你的进程优先级又是高于普通后台进程的。...那么如何利用系统的漏洞呢,大致的实现思路和代码如下: 思路一:API 启动前台Service时直接传入new Notification(); 思路二:API >= 18,同时启动两个id相同的前台

    99820

    超详细,Android AMS面试攻略,带你突破面试难关

    参考简答: 在Android系统中,AMS通过监控应用程序的组件(如Activity、Service、Broadcast Receiver)的状态变化,来管理应用程序的生命周期。...具体来说,AMS通过以下几个步骤来实现生命周期管理: 启动应用程序: 当用户点击应用图标启动应用时,AMS首先会启动应用的进程(如果该应用的进程尚未存在),然后创建应用程序的启动Activity,并调用其生命周期方法...具体来说,AMS通过以下几个步骤来管理任务栈: 任务栈创建与销毁: 当用户启动一个新应用程序时,AMS会创建一个新的任务栈,并将该应用程序的启动Activity压入该任务栈;当应用程序的所有活动都被销毁时...可见进程的优先级次于前台进程,但高于后台进程。 服务进程(Service Process): 这些进程正在后台执行Service,没有与用户直接交互,但是可能执行一些长时间运行的任务。...服务进程的优先级次于可见进程,但高于后台进程。 后台进程(Background Process): 这些进程对用户不可见,且不执行任何可见的Activity或者前台Service。

    1.3K10

    AndroidR兼容性适配指南

    但请注意,应用在后台运行时启动的前台服务通常无法访问位置信息、摄像头或麦克风。...详细了解前台服务的变更 Android 11 中的存储机制更新 Android 11(API 级别 30)进一步增强了平台功能,为外部存储设备上的应用和用户数据提供了更好的保护。...访问内部存储设备上的数据目录 如果您的应用以 Android 11 为目标平台,则不能访问其他任何应用的数据目录中的文件,即使其他应用以 Android 8.1(API 级别 27)或更低版本为目标平台且已使其数据目录中的文件全局可读也是如此...如果您在 activity 可见时启动了一项前台服务,并且用户随后将您的应用转到后台,那么您的应用可以继续访问相关数据,直到该前台服务停止。...按流量计费性 5G 检测 带宽估测 前台服务 在 Android 11 中,前台服务何时可以访问设备的位置信息、摄像头和麦克风发生了一些变化。这有助于保护敏感的用户数据。

    3.1K20

    Android P 行为变更

    若您的应用须在 Android P 设备上检测传感器事件,请使用 前台服务 。 *注意:调用 SensorManager 的 flush() 方法 的应用不受此变更影响。...设备安全变更 运行 Android P 的设备提供密钥轮替以及系统调用保护。不论您的应用针对哪个级别的 API,此类变更都能显著提升应用安全性。...更新 ICU 库 平台使用的 ICU 库已更新至 ICU 58 版本;Android 8.0 (API 版本 26) 和8.1 (API 等级 27) 使用的 ICU 库则更新至 ICU 60 版本...可在 Android Manifest 中的 Activity 级别的选项中设置屏幕方向偏好,或者调用setRequestedOrientation() 来设定。...前台服务 针对 Android P 或更高平台开发的应用必须请求 FOREGROUND_SERVICE 权限才能使用前台服务。

    3.4K20

    Android 面试之必问性能优化

    1.1 冷启动、热启动和温启动的优化 1.1.1 概念 对于Android应用程序来说,根据启动方式可以分为冷启动,热启动和温启动三种。...启动后立即显示应用程序空白的启动窗口。 创建应用程序进程。 一旦系统创建应用程序进程,应用程序进程就会进入下一阶段,并完成如下的一些事情。...目前,大部分的 应用在启动会都会先进入一个闪屏页(LaunchActivity) 来展示应用信息,如果在 Application 初始化了其它第三方的服务,就会出现启动的白屏问题。...Android的内存抖动可以使用Android Studio的Profiler进行检测。...基于上面的方案,可以得到以下一些常见的解决方案: 4.3.1 接口设计 1,API设计 App与服务器之间的API设计要考虑网络请求的频次,资源的状态等。

    1.1K00

    Android 面试之必问性能优化

    1.1 冷启动、热启动和温启动的优化 1.1.1 概念 对于Android应用程序来说,根据启动方式可以分为冷启动,热启动和温启动三种。...启动后立即显示应用程序空白的启动窗口。 创建应用程序进程。 一旦系统创建应用程序进程,应用程序进程就会进入下一阶段,并完成如下的一些事情。...目前,大部分的 应用在启动会都会先进入一个闪屏页(LaunchActivity) 来展示应用信息,如果在 Application 初始化了其它第三方的服务,就会出现启动的白屏问题。...Android的内存抖动可以使用Android Studio的Profiler进行检测。...基于上面的方案,可以得到以下一些常见的解决方案: 4.3.1 接口设计 1,API设计 App与服务器之间的API设计要考虑网络请求的频次,资源的状态等。

    1.2K31

    Android性能优化(一)

    视觉优化 应用程序启动有三种状态,每种状态都会影响应用程序对用户可见所需的时间:冷启动,热启动和温启动。 在冷启动时,应用程序从头开始。在其他状态下,系统需要将正在运行的应用程序从后台运行到前台。...默认情况 如果我们对App没有做处理(设置了默认主题),并且在 Application 初始化了其它第三方的服务(假设需要加载2000ms),那么冷启动过程就会如下图 : [70] 系统默认会在启动应用程序的时候启动空白窗口...我们可以通过红,黄,绿三种不同的颜色来区分布局的Measure,Layout,Executive的相对性能表现如何 提升布局性能的关键点是尽量保持布局层级的扁平化,避免出现重复的嵌套布局。...崩溃的收集 “崩溃”就是程序出现异常,而一个产品的崩溃率,跟我们如何捕获、处理这些异常有比较大的关系。对于很多中小型公司来说,可以选择一些第三方的服务。...优化工具 Memory Profiler Memory profiler是Android Studio自带的一个内存检测工具,通过实时图表的方式展示内存信息,具有可以识别内存泄露,内存抖动等现象,并可以将捕获到的内存信息进行堆转储

    3.5K20

    Android 11适配攻略

    前台服务 Android 10中,在前台服务访问位置信息,需要在对应的service中添加 location 服务类型。...android:foregroundServiceType="location|camera|microphone" /> 当应用程序在后台运行启动前台服务时,前台服务有如下限制...前台服务无法访问麦克风或摄像头。 除非在以下情况可以访问。 该服务由系统组件启动。 该服务通过与应用小部件交互启动。 该服务通过与通知交互来启动。 该服务作为PendingIntent。...从不同的可见应用程序发送的启动 。 该服务由在设备所有者模式下运行的设备策略控制器(DPC)应用程序启动。 该服务由提供VoiceInteractionService。...该服务由具有START_ACTIVITIES_FROM_BACKGROUND特权权限的应用程序启动 。

    4.8K11

    Android内存管理(六)Android对Linux系统的内存管理机制进行的优化

    托管通过 Service.startForeground() 启动的前台Service。...保留这种进程的的唯一目的是用作缓存(为了更加有效的使用内存而不是完全释放掉),以缩短下次启动应用程序所需的时间,因为启动一个新的进程也是需要代价的。只要有需要,Android会随时杀死这些进程。...Android系统如何评定进程的优先级 根据进程中当前活动组件的重要程度,Android 会将进程评定为它可能达到的最高级别。...此外,一个进程的级别可能会因其他进程对它的依赖而有所提高,即服务于另一进程的进程其级别永远不会低于其所服务的进程。...由于运行服务的进程其级别高于托管后台 Activity 的进程,因此,在 Activity 中启动一个长时间运行的操作时,最好为该操作启动服务,而不是简单地创建工作线程,当操作有可能比 Activity

    2.2K10

    Android 9.0 强势来袭,带来了哪些新特性?

    你关注的就是我关心的! 谷歌今 天全量对外发布 Android 9(API级别28) 版本,吓得我赶快去官网学习一波,今天带大家展望9.0的新特性。...通过这种准确性,我可以构建新的功能体验,例如室内导航和细粒度的基于位置的服务。...通过将APK文件的过去签名证书链接到现在签名证书的证书,此功能可以使你的应用程序使用新的签名证书进行签名。 注意:运行Android 8.1(API级别27)或更低版本的设备不支持更改签名证书。...如果你的应用程序minSdkVersion是27或更低,请使用旧的签名证书来签署您的应用程序以及新签名。...辅助功能窗格标题 在Android 8.1(API级别27)及更低版本中,辅助功能服务无法始终确定何时更新屏幕的特定窗格,例如活动将一个片段替换为另一个片段。

    4.9K20

    Android之startForeground使用

    因此,Android 8.0 引入了一种全新的方法,即 Context.startForegroundService(),以在前台启动新服务。...startForegroundService 在系统创建服务后,应用有五秒的时间来调用该服务的 startForeground() 方法以显示新服务的用户可见通知。...针对Android 9(API级别28)或更高级别并使用前台服务的应用程序必须请求 FOREGROUND_SERVICE permission 。...所以现在我们需要在清单文件中添加 Foreground服务权限 允许常规应用程序使用 Service.startForeground android:name="android.permission.FOREGROUND_SERVICE...; //设置为默认的声音 } 在完成Notification通知消息的构建后,在Service的onStartCommand中可以使用startForeground方法来让Android服务运行在前台:

    3.6K10

    高效管理 Android 前台服务

    因此,系统在内存吃紧的情况下会关闭部分进程,以此来为优先级更高的任务腾出运行空间。那么系统是如何评判优先级高低的呢?判断标准其实很简单,关键就在于应用进程对用户有多重要。...为了帮助您更好地创建和管理前台服务,我们特别为总结了以下 3 个操作要点: 适用于所有 API 等级: 应用创建服务时,必须显示级别至少为 PRIORITY_LOW 的常驻通知 (persistent...若应用的目标 API 等级高于 26,您还需要将通知渠道的级别至少设定为IMPORTANCE_LOW。...如果您想了解有关前台服务的更多信息,包括最近几个版本 Android 平台内的相关重要更新,请参阅《在前台运行服务》。...其它方案 不建议您通过前台服务实现被动定位追踪,如果用户已经允许您的应用进行地理位置追踪,请调用 FusedLocationProvider API 获取位置更新,并注意设置合适的获取频率 (切勿太频繁

    1.1K70

    【Android笔记】Android Service 服务

    service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务总是藏在后台的...它可以通过Service.stopSelf()方法或者Service.stopSelfResult()方法来停止自己,只要调用一次stopService()方法便可以停止服务,无论调用了多少次的启动服务方法...四、 Service示例 下面我做了一个简单的音乐播放的应用,分别使用startService和bindService来启动本地的服务。...5 一个空线程没有运行任何可用应用程序组,保留他们的唯一原因是为了设立一个缓存机制,来加快组件启动的时间。系统经常杀死这些内存来平衡系统的整个系统的资源,进程缓存和基本核心缓存之间的资源。...因为一个运行服务的进程的优先级高于运行后台activity的进程,一个activity会准备一个长时间运行的操作来启动一个服务,而不是启动一个线程–尤其是这个操作可能会拖垮这个activity。

    1.1K10

    Android Service 服务(一)—— Service

    service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务总是藏在后台的...它可以通过Service.stopSelf()方法或者Service.stopSelfResult()方法来停止自己,只要调用一次stopService()方法便可以停止服务,无论调用了多少次的启动服务方法...四、 Service示例 下面我做了一个简单的音乐播放的应用,分别使用startService和bindService来启动本地的服务。...5 一个空线程没有运行任何可用应用程序组,保留他们的唯一原因是为了设立一个缓存机制,来加快组件启动的时间。系统经常杀死这些内存来平衡系统的整个系统的资源,进程缓存和基本核心缓存之间的资源。...因为一个运行服务的进程的优先级高于运行后台activity的进程,一个activity会准备一个长时间运行的操作来启动一个服务,而不是启动一个线程–尤其是这个操作可能会拖垮这个activity。

    2K30

    全面解读系统更新,收藏下这份 Android 12 (S) 版本适配自查表

    性能和电池 精确的闹钟权限(新) 强制❗ 设置 AlarmManager 精准闹钟的应用必须在 Manifest 中声明权限 前台服务启动限制 强制❗ 除了少数情况外,禁止应用从后台启动前台服务 通知...2.8 检测不安全的嵌套 Intent 启动 Android 12 引入了一项 StrictMode 检查规则,用于检测不安全的嵌套 Intent 启动。...相关资料:设置重复闹钟时间[16] 3.2 前台服务启动限制 Android 12 对应用从后台启动前台服务的行为做出限制,除了 后台启动限制的豁免[17] 等少数情况外,如果应用尝试在后台运行时启动前台服务...,系统会使用新的 SplashScreen API 来启动应用启动动画。...4.13 延迟展示前台服务通知 前台服务(startForegroundService 启动的服务)会显示一个系统通知,以便让用户应用正在执行任务并且消耗系统资源,即使该应用已经退出到后台。

    4.1K10

    Android14 适配之——targetSdkVersion 升级到 34 需要注意些什么?

    在 Android12(API级别31)及更高版本的设备上,系统对短时间运行的前台服务进行了优化。系统会等待10秒,然后才显示与前台服务相关联的通知,以改善用户体验,减少即时通知的干扰。...前台服务类型是在 Android10 引入的,通过 android:foregroundServiceType 可以指定 的服务类型,可供选择的前台服务类型有: camera:需要在后台时继续访问摄像头...:预留给系统应用程序和特定的系统集成,以继续使用前台服务。...系统会查找能够处理这个操作的组件,并启动它们。隐式 Intent 主要用于在应用程序内或与其他应用程序之间触发各种操作,如启动活动、启动服务、发送广播等。...这些变化扩展了现有的限制集,通过防止恶意应用程序滥用 API 从后台启动破坏性 Activity 来保护用户。

    20.4K30
    领券