【发布时间】:2016-05-03 20:49:51
【问题描述】:
我正在创建一个具有聊天功能的库项目,因此用户必须将他的启动活动注册为父项才能执行回栈(向后导航)。 这是我的示例应用清单。
<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:我的 MainActivity 不直接调用聊天活动 提供了用于启动它的 API。
谢谢。
【问题讨论】:
-
你为什么不在 onBackPressed 中完成()你的活动?如果在启动您的活动时启动活动尚未完成,那么这将重新启动前一个活动。
-
@dev.bmax 这是一个库项目,如果我收到通知或只是有意启动聊天活动,完成它将关闭应用程序而不是启动它的父应用程序。
标签: android android-intent android-activity android-navigation