无法从通知启动的 Activity 中删除额外内容

Can not remove extras from Activity launched from notification

我有 MainActivity,它是从通知启动的,带有以下附加功能:

 val intent = Intent(this, MainActivity::class.java)
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
    intent.putExtra(Constants.EXTRA_NEWS_ID, id.toInt())
    val options = Bundle()
    options.putInt(Constants.EXTRA_NEWS_ID, id.toInt())
    val pendingIntent = PendingIntent.getActivity(
        this, id.toInt(), intent,
        PendingIntent.FLAG_ONE_SHOT, options
    )

然后在 MainActivity 的 onCreate 中检查附加项并尝试删除附加项:

if (intent.hasExtra(Constants.EXTRA_NEWS_ID)) {
        intentFromNotification = true
        Application.newsDetailId = intent.getIntExtra(Constants.EXTRA_NEWS_ID, 0)
        Log.d("NOTIF", "NewsId = ${NzmApplication.newsDetailId}")
        intent.removeExtra(Constants.EXTRA_NEWS_ID)
        intent.replaceExtras(Bundle())
        intent.action = ""
        intent.data = null
        intent.flags = 0
    }

经过一些初始逻辑后,我打开第二个 ContentActivity,如下所示:

if (intentFromNotification) { // Activity called from notification = automaticly redirect to news detail
                        val intent = Intent(this, ContentActivity::class.java)
                        intent.putExtra(
                            Constants.EXTRA_FRAGMENT,
                            Constants.FRAGMENT_NEWS_DETAIL
                        )
                        intentFromNotification = false
                        startActivity(intent)
                    }

ContentActivity 工作正常,显示需要的内容,但是当我按回 ContentActivity 时,MainActivity 应该打开并等待用户交互,但它再次执行与第一次打开时相同的代码块并自动打开 ContentActivity。额外的东西还在,所以基本上应用程序是循环的。

更奇怪的是,并非在所有设备上都会发生。 我有 Sony Xperia XZ1 Compact (Android 9),但大约 250 名用户中没有人报告过此类问题。

编辑: ContentActivity

中的 onBackPress
 override fun onBackPressed() {
    super.onBackPressed()
    if (supportFragmentManager.backStackEntryCount == 0) {
        this.finish()
    }
}

问题出在开发者设置中,“不保留活动” 我忘记在一些特定测试后禁用此设置 也许有人会发现这很有帮助 :)