首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当应用程序在Android api 28 (pie)中处于前台或后台时,在单击通知时“启动活动”会有额外的空值

当应用程序在Android API 28 (Pie)中处于前台或后台时,在单击通知时,"启动活动"可能会出现额外的空值。

在Android应用开发中,通知是一种用于向用户显示重要信息的方式。当应用程序在前台或后台运行时,用户可能会收到通知,并且可以通过单击通知来执行某些操作,例如打开相关的活动。

在Android API 28 (Pie)中,通知的点击行为发生变化,可能会导致"启动活动"为空值。这是由于一些限制和变化引起的,这些限制和变化是为了增强用户隐私和应用程序的安全性。

为了解决这个问题,开发人员可以采取以下步骤:

  1. 检查通知点击行为的返回值:开发人员可以在启动活动的代码中进行额外的空值检查。当"启动活动"为空时,可以采取相应的措施,例如打开应用程序的主活动或执行其他默认操作。

示例代码:

代码语言:txt
复制
Intent intent = getIntent();
if (intent != null && intent.getExtras() != null) {
    // 进行通知点击后的操作
} else {
    // 处理额外的空值情况,例如打开应用程序的主活动
}
  1. 使用PendingIntent来处理通知点击:开发人员可以在创建通知时使用PendingIntent来处理通知的点击事件。这样可以确保在通知点击时,能够正确地启动相关的活动,而避免额外的空值问题。

示例代码:

代码语言:txt
复制
Intent intent = new Intent(context, YourActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
        .setContentIntent(pendingIntent)
        .setContentTitle("标题")
        .setContentText("内容")
        .setSmallIcon(R.drawable.ic_notification);

NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(notificationId, builder.build());

以上是解决在Android API 28 (Pie)中应用程序在前台或后台时,通知点击时可能出现额外的空值的一些方法。这些方法可以帮助开发人员处理该问题,并确保应用程序的正常运行。

请注意,对于更详细和具体的解决方案,建议参考Android官方文档和开发者社区中的相关讨论。同时,腾讯云也提供了丰富的云计算产品和服务,可供开发人员使用,更多信息请访问腾讯云官方网站。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

速读原著-Android应用开发入门教程(Android应用程序概念性描述)

(4)内容提供者(Content Provider) 应用程序能够将它们数据保存到文件 SQLite 数据库,甚至是任何有效设备需要将数据与其他应用共享,内容提供者将会很有用。...系统通常有很多这样进程在运行,因此要将这些进程保存在 LRU 列表,以确保内存不足用户最近看到进程最后一个被杀死。 (5)(Empty)进程 不包含任何处于活动状态应用程序组件。...运行活动情景:一个活动启动活动 onCreate()、onStart()和 onResume()这 3 个方法被依次调用,活动对应界面出现在屏幕上。...活动被“覆盖”情景:Android 活动一般都占据一个完整屏幕,从当前活动启动另外一个活动,另一个活动将被启动前台(Foreground),当前活动转入后台(Background),这时活动...广播接收器只有在这个方法执行过程处于活动状态, onReceive()返回后,广播接收器将不再处于活动状态。广播接收器功能类似于一个回调函数,只是单次运行时处于活动状态。

99910

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

相关API返回空占位符,具体取决于应用程序目标SDK版本: 如果您应用针对Android 12,则API返回null。...表现 前台服务启动限制 除少数特殊情况外,以Android 12为目标的应用程序无法在后台运行时启动前台服务。如果应用程序后台运行时尝试启动前台服务,则会发生异常(少数特殊情况除外)。...无法从服务广播接收者创建Notification trampolines 当用户与通知交互 ,某些应用程序会通过启动应用程序组件来响应通知点击,该组件最终会启动用户最终看到并与之交互活动。...应用尝试从充当通知蹦床服务广播接收器启动活动,系统会阻止该活动启动,并且Logcat中会显示以下消息 : Indirect notification activity start (trampoline...蹦床活动启动用户点击通知后看到活动活动。 使用PendingIntent在上一步创建对象作为构建通知一部分。

4.5K10
  • Android 各版本特性

    所有其他 Activity 虽然可见,但均处于暂停状态。一个 Activity 处于 PIP 模式,其实它是出在暂停状态,但其内容会继续展示。...后台服务(Background Service)限制 进程处于后台1分钟后会进入idle状态,系统停止其后台服务,也就意味着应用处于后台必须1分钟内处理完收尾工作,不允许在后台长时间监控系统,从而节省功耗...; 对前台服务(Foreground Service)不会有这个限制,因为前台服务都会挂一个前台通知对用户来说是可见。...Android Q Zygote进程,提早开启应用进程并将其移至安全容器,如此一来,应用便做好了随时启动准备 应用系统启动映像中加入了更多信息,例如类,并借助线程管理加快映像文件加载速度...兼容了公开API 现代化Android:从下半年开始,Google Play 将要求所有新应用及更新将 targetSdkVersion 设置为 28 (Android 9 Pie)。

    1.4K10

    使用 FCM 通知用户

    如需进一步了解电源管理,可参阅这篇文章:"Android 9 Pie Moar 电源及未来"。 是否需要发送通知? 您发送所有通知都应该设计良好且可执行,并且能为用户提供及时相关信息。...⚠️ 发布通知前应避免添加任何额外网络请求 还要记住,根据设备状态、用户操作和应用行为,一个多个省电功能可能会限制应用后台工作。...任务完成后再更新通知 (如果此时通知处于活跃状态)。例如,可以 FCM 有效负载包含内容缩略图预览并先在通知中发布。然后调度一项任务获取媒体文件。...Android 9 Pie 也会在开启省电模式强制限制后台执行。使用普通优先级 FCM 消息启动后台服务会导致 IllegalStateException。...这对高优先级和普通优先级 FCM 消息均适用,且无论应用处于前台还是后台。 应用待机分组根据应用所在分组实施不同程度限制。根据应用所属分组,每日发送高优先级消息数量可能受限。

    3.5K30

    笔记(24)安卓各版本特性简述

    通过机器学习预测你回复消息可能会说些什么。 用户隐私。给用户更多应用程序控制权。提供仅这一次、应用使用时授权等选择。 ART优化。...2.请求位置权限(位置权限不能和别的权限同时请求,并且建议前台位置权限和后台位置权限分开请求) 3.软件包可见性(限制app不去访问别的应用包名及内容,如果需要访问则可以manifest文件添加对应应用...4.自定义toast不能在应用处于后台时候弹出 5.APK签名变更(仅通过v1验证应用无法andoird11以上版本安装更新) 6.异步任务AsyncTask已不建议使用,建议使用kotlin协程...可变性(需要指定FLAG) 3.前台服务启动限制 4.精确闹钟权限 5.通知trampoline限制 6.大致位置(区分精确位置和大致位置) 粗略位置: 精确到2平方公里位置,请求 ACCESS_COARSE_LOCATION...官方从 Android 9(API 级别 28)开始,逐步开始对应用使用非 SDK 接口实施了限制。

    57410

    Android 9 适配怎么做? “QQ音乐”优化实录

    适配原则是优先黑名单和深灰名单,浅灰名单在官方未有替代 API 之前可以暂时不适配, Android P 上运行也不会有任何问题。...目前用户可以通过设置页面对任意应用施加后台执行限制,后台执行限制会对应用有两方面的影响: 后台服务限制: 处于前台(可见、具有前台服务或者关联到前台应用)临时白名单(处理高优先级 FCM、接收短信等广播或者执行通知... PendingIntent),应用可以自由创建和运行前台后台服务。...进入后台一个持续数分钟时间窗内,应用仍可以创建和使用服务,但是超过该时间之后再通过 startService 去启动一个服务就会抛出 java.lang.IllegalStateException...五、其余适配 4.1 前台 Service Android P ,如果 targeSdkVersion 升级到 28,使用前台 Service 必须要申请 FOREGROUND_SERVICE 权限

    74130

    Android 9 适配怎么做? “QQ音乐”优化实录

    适配原则是优先黑名单和深灰名单,浅灰名单在官方未有替代 API 之前可以暂时不适配, Android P 上运行也不会有任何问题。...目前用户可以通过设置页面对任意应用施加后台执行限制,后台执行限制会对应用有两方面的影响: 后台服务限制: 处于前台(可见、具有前台服务或者关联到前台应用)临时白名单(处理高优先级 FCM、接收短信等广播或者执行通知...PendingIntent),应用可以自由创建和运行前台后台服务。...进入后台一个持续数分钟时间窗内,应用仍可以创建和使用服务,但是超过该时间之后再通过 startService 去启动一个服务就会抛出 java.lang.IllegalStateException...五、其余适配 4.1 前台 Service Android P ,如果 targeSdkVersion 升级到 28,使用前台 Service 必须要申请 FOREGROUND_SERVICE 权限

    2.4K20

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

    某个应用组件启动且该应用没有运行其他任何组件Android 系统会使用单个执行线程为应用启动 Linux 进程。默认情况下,同一应用所有组件相同进程和线程(称为“主”线程) 运行。...如果某个应用组件启动且该应用已存在进程(因为存在该应用其他组件),则该组件会在此进程内启动并使用相同执行线程。但是,你也可以安排应用其他组件单独进程运行,并为任何进程创建额外线程。...一个健康系统,只有缓存进程或者进程会被系统随时终止,如果服务进程,或者更高优先级可见进程以及前台进程也开始被系统终止(不包括应用本身糟糕内存使用导致OOM),那就说明系统运行已经处于一个亚健康甚至极不健康状态...例如,如果另一个应用绑定到该应用 Service,那么该应用处于前台:IME 壁纸 Service 通知侦听器 语音文本 Service 如果以上条件均不满足,应用将被视为处于后台。...由于运行服务进程其级别高于托管后台 Activity 进程,因此, Activity 启动一个长时间运行操作,最好为该操作启动服务,而不是简单地创建工作线程,操作有可能比 Activity

    1.6K10

    应用保活终极总结(二):Android6.0及以上保活实践(进程防杀篇)

    接下来,我们需要了解下Android系统回收内存进程所依据规则: 进程在内存活动主要有五种状态:即前台进程、可见进程、服务进程、后台进程、进程,这几种状态进程优先级由高到低,oom_adj...分析: 1)"咕咚"处于停止状态,一键清理和黑屏状态会被杀死,说明没有进入运动界面之前,其保活机制没有被启动(即没有使运动界面切换到后台等); 2)“咕咚”处于运动状态,一键清理和黑屏状态没有被杀死...分析: "乐动力"处于停止状态,黑屏状态下,其短时间内被系统杀死,说明保活机制没有启用; 但处于运动暂停进行状态,"乐动力"一段时间内没有被杀死,且锁屏,"乐动力"会自动将运动界面切换到前台..."悦动圈"处于停止状态,退到后台,锁屏,等待3分钟,进程死亡,通知栏被清除; b. "悦动圈"处于运动暂停状态,自定义锁屏、切换界面到前台与咕咚、乐动力一样,效果一致; c...."悦动圈"处于运动进行状态,自定义锁屏、切换界面到前台与咕咚、乐动力一样,效果一致。 结论: 常驻通知栏、广播锁屏、自定义锁屏。

    4.1K21

    QQ 音乐 AndroidPie 之路

    是多少; 屏幕关闭,位置服务可能被停用; 后台应用没有网络访问权限; 这里需要重点介绍一下后台执行限制,该限制于 Android O 版本引入,主要是为了优化 Android 多应用多服务运行时,...目前用户可以通过设置页面对任意应用施加后台执行限制,后台执行限制会对应用有两方面的影响: 后台服务限制: 处于前台(可见、具有前台服务或者关联到前台应用)临时白名单(处理高优先级 FCM、接收短信等广播或者执行通知...PendingIntent),应用可以自由创建和运行前台后台服务。...进入后台一个持续数分钟时间窗内,应用仍可以创建和使用服务,但是超过该时间之后再通过 startService 去启动一个服务就会抛出 java.lang.IllegalStateException...五、其余适配 4.1 前台 Service Android P ,如果 targeSdkVersion 升级到 28,使用前台 Service 必须要申请 FOREGROUND_SERVICE 权限

    3.6K120

    Android开发基础系列】Android开发学习专题

    大多数应用程序会有多个用户界面,因此便会有多个相应活动。         ...需要将数据与其他应用共享,内容提供者将会很有用。一个内容提供者类实现了一组标准方法,从而能够让其他应用程序保存读取此内容提供者处理各种数据类型。...(5)(Empty)进程         不包含任何处于活动状态应用程序组件。...广播接收器只有在这个方法执行过程处于活动状态,onReceive()返回后,广播接收器将不再处于活动状态。广播接收器功能类似于一个回调函数,只是单次运行时处于活动状态。...如果没有调用finish()函数,第二个活动启动,第一个活动处于OnPause状态,第二个活动退出后,第一个活动重新出现,也就是会调用活动onResume()函数。

    32620

    更强续航,尽在 Android 9 Pie

    此外,您在更新 API 等级,请务必准确评估应用前台后台需求,因为此类需求对设备续航和性能影响很大。...省电模式 Android 7.0 Nougat 有了较大幅度提升,屏幕关闭且设备处于静止状态达到一定时间后,省电模式会启用第二级系统活动限制。...为了达到这些目的,Android 引入了应用待机分类和后台限制这两项特性,同时优化了原有的省电助手功能。建议开发者已启用以上特性 Android 9 Pie 设备上对应用进行相关测试。...适配应用至 Oreo 更高版本过程,请您仔细查阅《满足 Google Play 目标 API 等级要求》一文,并按照下表所列内容妥善处理应用后台工作: ?...对于开发者而言,能否将资源分配至正确设计模式和架构上至关重要,为此,我们建议您在开发过程采纳以下策略: 1.确保用户正在使用应用完成必要工作 2.允许推迟后台工作任务 3.使用前台服务,但允许用户通过点击消息通知停止正在运行前台服务

    1.5K40

    Android面试题大全

    Android 系统,广播体现在方方面面,例如:开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务功能;网络状态改变系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作...Android进程与线程 进程 前台进程 可见进程 服务进程 后台进程 进程 前台进程 // 前台进程 当前进程activity正在与用户进行交互。...(只是拿阿里打个比方,其实BAT系都差不多) 白色保活 // 白色保活 白色保活手段非常简单,就是调用系统api启动一个前台Service进程,这样会在系统通知栏生成一个Notification...它是利用系统漏洞来启动一个前台Service进程,与普通启动方式区别在于,它不会在系统通知栏处出现一个Notification,看起来就如同运行着一个后台Service进程一样。...那么如何利用系统漏洞呢,大致实现思路和代码如下: 思路一:API < 18,启动前台Service直接传入new Notification(); 思路二:API >= 18,同时启动两个id相同前台

    1.3K50

    Android 13 适配指南

    12L(API 级别 32)更低版本为目标平台;当应用程序创建其第一个通知渠道,系统将显示权限对话框; 如果是现有应用更新,程序目标 API 级别为: 以 Android 13 (33)为目标平台...❞ Intent 过滤器会屏蔽不匹配 intent App 以 Android 13(33) 更高版本为 Target 其他应用导出组件发送 intent ,仅该 intent 与接收应用...❞ 系统只有安全情况下才会触发撤消操作,也就是有应用组件仍在前台运行,或者有另一个应用正在访问你应用组件(如 content provider)不会发生撤消。...前台服务 (FGS) 任务管理器 Android 13 前台服务( Foreground Services:FGS)任务管理器显示当前运行前台服务应用程序列表,此列表称为活动应用程序,可以通过下拉通知抽屉并点击启示来访问...过去,JobScheduler 仅使用该信号让预提取作业有机会使用免费多余数据, Android 13 系统现在会尝试确定应用下次启动时间,并根据该估算运行预提取作业,应用应尝试使用“预提取

    5.2K31

    API level targeting to 28,准备好了吗?

    dark-greylist(深灰名单):targetSdkVersion小于28仍可继续使用此名单接口,但会出现警告提示;大于等于28,这些接口将会限制访问。 (3)....使用 Android 9.0 更高版本设备调试应用 应用上运行测试,如果该应用访问了某些非SDK 接口,系统就会输出一条日志消息。...veridex工具也不断地更新,它存在以下局限性: 它无法检测到通过JNI 实现调用。 它只能检测到一部分通过反射实现调用。 它对非活动代码路径分析仅限于API 级别的检查。 【4....如果您应用有多个使用Web View,CookieManagerandroid.webkit包其他API进程,则第二个进程调用WebView方法,您应用将崩溃。 【6....测试 例如地图项目:测试覆盖后台导航,后台录音(如唤醒)等 6.5 限制访问 Wi-Fi 位置和连接信息 Android 9 ,应用进行 Wi-Fi 扫描权限要求比之前版本更严格。

    1.3K20

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

    Android12(API级别31)及更高版本设备上,系统对短时间运行前台服务进行了优化。系统会等待10秒,然后才显示与前台服务相关联通知,以改善用户体验,减少即时通知干扰。...对于上面的示例代码需要额外注意是, Android13 及以上手机上弹出 Notification 通知,需要动态申请 android.permission.POST_NOTIFICATIONS...系统会查找能够处理这个操作组件,并启动它们。隐式 Intent 主要用于应用程序内或与其他应用程序之间触发各种操作,如启动活动启动服务、发送广播等。...2.5 后台启动 Activity 新增限制 Android14 上系统进一步限制了 App 从后台启动 Activity 情况: App 使用 PendingIntent#send() 类似方法发送...一个前台可见应用使用 bindService() 方法绑定另一个后台应用 Service ,这个可见应用现在必须选择是否将自己后台 Activity 启动权限授予被绑定服务。

    14.9K30

    Android学习笔记(四)深入探讨Activity

    一个新Activity启动,它就会变成Activity状态,并移到栈顶,返回到前一个Activity,前台Activity被关闭,那么站总下一个Activity就会移动到栈顶,变成活动状态。...2、Activity状态   随着Activity创建和销毁,从栈移进移出过程他们经历了如下4种可能状态: · 活动状态:一个Activity处于栈顶是,它是可见、具有焦点前台Activity...更新、线程或者CPU密集进程 61 * Activity不是前台活动状态Activity 62 */ 63 } 64 65 //可见生存期结束时调用...· 活动生存期:onResume及其对应onPause之间时间。   Activity处于活动,它在前台,并可以接收用户输入事件。...Activity被销毁前可能会经历多个活动生存期,失去焦点是,活动生存期就结束了。尽量让onPause和onResume方法代码执行迅速,尽可能少。以保证前后台切换能够保持响应。

    1.1K100

    AndroidAndroid对于Activity运用以及ViewGroup和 用户界面组件项目中运用

    ="android:maxHeight">24dip 按Home将上一个任务切换到后台 长按Home键显示最近执行任务列表 单击启动主屏幕应用程序图标以打开新任务将现有任务安排到前台...单任务模式下启动活动,系统将搜索是否已存在合适任务。...如果任务不存在,将启动一个新任务,并在新任务启动单一任务模式下活动实例。 启动单个实例活动,它将在系统搜索此活动实例是否已存在。...最终显示(setContentView) ViewGroup 应用程序加载上述布局资源Android会将布局每个节点实例化为对象。...Android为我们提供了一些应用程序控件、标准UI布局,只需定义内容即可。这些UI组件具有用于其属性API文档,例如操作栏、对话框和状态通知栏。

    67820

    Android进程与线程

    Android进程与线程 进程 前台进程 可见进程 服务进程(service进程) 后台进程 进程 Android线程间通信有哪几种方式 Devik进程和Linux进程区别 进程保活(不死进程) 当前...Davik 进程就是 Linux 操作系统一个进程,属于 Linux 进程。 每一个 Android 应用程序进程都有一个 Dalvik 虚拟机实例。...(只是拿阿里打个比方,其实BAT系都差不多) 白色保活 // 白色保活 白色保活手段非常简单,就是调用系统api启动一个前台Service进程,这样会在系统通知栏生成一个Notification...它是利用系统漏洞来启动一个前台Service进程,与普通启动方式区别在于,它不会在系统通知栏处出现一个Notification,看起来就如同运行着一个后台Service进程一样。...那么如何利用系统漏洞呢,大致实现思路和代码如下: 思路一:API < 18,启动前台Service直接传入new Notification(); 思路二:API >= 18,同时启动两个id相同前台

    68220

    Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?

    建议使用 WorkManager 而不是精确闹钟; 3)系统处于空闲时,大概时间点处理事务,则可以调用非精确闹钟一些 API 处理,例如使用 setAndAllowWhileIdle() 而不是...动态广播 App 进入缓存态将会入队保存 Android14 ,我们使用 Context 上下文注册动态广播接收器,可以 App 进入缓存状态,将已发送还未接收广播放入到一个队列中保存...试了下在 Android14 设备上 A App 调用此 API 去杀死 B App 后台进程,确实没有任何作用;但如果是 Android14 以下设备上调用,确实可以杀死 B App 后台进程... Android14 及以后版本,如果存储媒体文件应用包名不是始终对其他应用程序可见,则在查询媒体库,所有者包名将被隐藏替换为匿名。...以下情况,此类通知仍不可关闭: 1)手机处于锁定状态; 2)如果用户选择全部清除通知操作(有助于防止意外关闭); 此外,下列几种情况并没有变更: 1)使用 CallStyle 创建通知,即来电通知样式

    4.2K10
    领券