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
相关产品推荐
相关产品推荐

