从另一个 activity 返回父 activity 的现有实例

Returning to parent activity's existing instance from another activity

我正在创建一个具有聊天功能的库项目,因此用户必须将他的启动 activity 注册为父项才能执行回溯(向后导航)。 这是我的示例应用程序清单..

<activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.ak.messages.ChatActivity"
            android:label="@string/app_name"
            android:screenOrientation="sensorPortrait"
            android:parentActivityName=".MainActivity"
            android:theme="@style/AppTheme"
            android:windowSoftInputMode="adjustResize">
            <meta-data android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity" />
        </activity>

这是我尝试从 ChatActivity 返回的方式

   @Override
    public void onBackPressed() {
        Intent intent = NavUtils.getParentActivityIntent(this);
            if(intent!=null){
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);

        }
//      super.onBackPressed();
    }

但它总是创建一个新实例。有什么方法可以确保在用户执行后退操作时撤销同一个 MainActivity 的实例?

PS: Chat activity is not directly invoked by MainActivity I have provided with APIs to launch it.

谢谢。

为什么不尝试替换

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);

intent.setFlags(FLAG_ACTIVITY_SINGLE_TOP);

这样您将恢复父级 activity 并将在 Parent Activity

onNewIntent() 收到回电

终于能够 access/launch activity 借助意图操作:

 @Override
    public void onBackPressed() {
        Intent intent = NavUtils.getParentActivityIntent(this);
            if(intent!=null){
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.setAction("android.support.PARENT_ACTIVITY");
            startActivity(intent);
        }super.onBackPressed();
    }

用户可以从 intent 中获取操作以处理..