You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 13打开应用通知设置并关闭通知后出现白屏及UI异常求助

Android 13打开应用通知设置返回后白屏问题解决

问题详情

  • 功能:点击按钮跳转至应用通知设置页,可开关通知,Android 13以下版本运行正常
  • Android 13异常表现:关闭通知返回应用后出现白屏,部分依赖API响应的UI元素消失
  • 跳转设置页代码:
Intent intent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
    .putExtra(Settings.EXTRA_APP_PACKAGE, activity.packageName);
startActivity(intent);

排查方向

Android 13对通知权限的处理逻辑有变更,大概率是以下情况:

  • 关闭通知时,系统触发了应用的内存回收回调(onTrimMemory/onLowMemory),如果应用在这些回调里过度释放了API缓存或UI实例,就会导致返回后无法渲染页面
  • 部分场景下,系统会在通知权限变更后重启应用进程,若没做好状态保存与恢复,就会出现数据丢失、白屏

解决办法

1. 检查内存回收逻辑

  • 查看onTrimMemory、onLowMemory方法,确认是否误删了UI依赖的API数据或必要实例
  • 给资源释放操作添加判断条件,仅在真正内存紧张时执行,避免误触发

2. 主动检查权限状态并刷新UI

从设置页返回后,在onResume中主动检查通知权限,重新拉取数据刷新UI:

@Override
protected void onResume() {
    super.onResume();
    NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    boolean isNotificationEnabled = nm.areNotificationsEnabled();
    // 重新加载API数据并刷新UI
    loadApiDataAndRefreshUI();
}

3. 适配Android 13的跳转代码

如果应用使用了通知渠道,跳转设置页时添加渠道ID参数,避免系统处理异常:

Intent intent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName());
// 替换为你的应用通知渠道ID
// intent.putExtra(Settings.EXTRA_CHANNEL_ID, "your_notification_channel_id");
startActivity(intent);

4. 做好页面状态保存与恢复

  • 在onSaveInstanceState中保存UI关键数据(如API返回内容、页面状态)
  • 在onCreate或onRestoreInstanceState中恢复数据,防止进程重启后数据丢失

内容的提问来源于stack exchange,提问作者Deepak Sachdeva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:52:22