你不应该改变堆栈。 Android后退按钮应该像在网络浏览器中一样工作。
我可以想办法做到这一点,但它是相当黑客。
通过将其添加到AndroidManifest
实例让你的活动singleTask
:
<activity android:name=".activities.A"
android:label="@string/A_title"
android:launchMode="singleTask"/>
<activity android:name=".activities.B"
android:label="@string/B_title"
android:launchMode="singleTask"/>
扩展Application
将举行的地方去的逻辑。
实施例:
public class DontHackAndroidLikeThis extends Application {
private Stack<Activity> classes = new Stack<Activity>();
public Activity getBackActivity() {
return classes.pop();
}
public void addBackActivity(Activity activity) {
classes.push(activity);
}
}
从A到B:
DontHackAndroidLikeThis app = (DontHackAndroidLikeThis) getApplication();
app.addBackActivity(A.class);
startActivity(this, B.class);
从B到C:
DontHackAndroidLikeThis app = (DontHackAndroidLikeThis) getApplication();
app.addBackActivity(B.class);
startActivity(this, C.class);
在C:
If (shouldNotGoBackToB()) {
DontHackAndroidLikeThis app = (DontHackAndroidLikeThis) getApplication();
app.pop();
}
并从堆栈处理后退按钮到pop()
。
再次,你不应该这样做:)
我想弄清楚,使用:intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); – user123321 2012-03-12 18:18:27
没有Intent.FLAG_ACTIVITY_NEW_TASK应用程序有时只是关闭本身在Android 4 – max4ever 2012-10-12 15:00:16
IntentCompat有一个标志,现在明确任务为好,这样你就可以支持预API级别11 - http://developer.android.com/reference/android/支持/ V4 /内容/ IntentCompat.html#FLAG_ACTIVITY_CLEAR_TASK – 2013-12-12 12:34:38