从通知中打开当前正在运行的子活动,而不是创建新的子活动

时间:2019-02-21 12:25:26

标签: android android-activity notifications background

我正在尝试在子活动中发出通知,一旦单击该活动,它将重新打开后台活动(如果存在),否则将返回到父活动。 父活动期望子活动(startActivityForResult)产生结果,所以我不能使用launchMode singleTop或类似的东西。

我需要这个,因为子活动具有不可中断的开放连接。 该连接保留在此子活动的片段中,其中keepInstance设置为true:

    connectionFragment = fm.findFragmentByTag(TAG_CONNECTION_FRAGMENT) as ConnectionFragment?
    if (connectionFragment == null) {
        connectionFragment = ConnectionFragment.newInstance()
        fm.beginTransaction().add(connectionFragment, TAG_CONNECTION_FRAGMENT).commit()
    }

我已经测试了许多解决方案,但是现在这是我要传递给NotificationBuilder setContentIntent的待定意图:

PendingIntent.getActivity(
    this,
    0,
    Intent(this, ChildActivity::class.java)
            .setAction(Intent.ACTION_VIEW)
            .addCategory(Intent.CATEGORY_DEFAULT)
            .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            .addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
            .putExtra("notification", true),
    0)

如您所见,我将额外设置“通知”,因此,在调用onCreate时,我可以检测到是否重新创建了活动(当findFragmentByTag返回null时)并返回到父活动。

如果没有选择在后台重新打开正在运行的活动,我愿意寻找解决此问题的方法。

0 个答案:

没有答案