所以我在我的應用程序中有一個巨大的活動迷宮。我需要做的是,當用戶登錄系統時,活動歷史記錄應該被清除。當我開始一個新的活動時,我不能使用finish(),因爲我希望這些活動有一個歷史記錄,直到用戶登錄爲止。我在開始一個活動時嘗試了不同的標誌,但是我沒有成功。有任何想法嗎?開始活動並清除活動歷史記錄
乾杯,
所以我在我的應用程序中有一個巨大的活動迷宮。我需要做的是,當用戶登錄系統時,活動歷史記錄應該被清除。當我開始一個新的活動時,我不能使用finish(),因爲我希望這些活動有一個歷史記錄,直到用戶登錄爲止。我在開始一個活動時嘗試了不同的標誌,但是我沒有成功。有任何想法嗎?開始活動並清除活動歷史記錄
乾杯,
我也可以透露我目前使用的解決我的問題的HAX。在「預登錄」活動中,我已經將這個清單中的:在每個活動
android:noHistory="true"
然後,我有這樣的代碼:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = new Intent(MyActivity.this, ParentActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
return true;
}
return super.onKeyDown(keyCode, event);
}
的FLAG_ACTIVITY_NO_ANIMATION僅適用於手機與API級別5或更高,但它所做的是在「開放新活動」 - 動畫,「回到上一個活動」 - 動畫播放(至少在機器人和連線上)。這可以防止當用戶按下後退按鈕時啓動新活動的混淆現象。
該解決方案並不完美。在API級別低於5的手機上,動畫變得不正確。此外,它不是超級整潔,需要更多的代碼,然後我更喜歡。儘管如此,它的工作原理...
你可以嘗試模擬「迴歸」到以前的活動(即,當然,當使用65536
,而不是Intent.FLAG_ACTIVITY_NO_ANIMATION
爲早期版本
這完全爲我工作,而不是真的那裏)。謝謝!我打算用默認的動畫ID完成這個工作,但令我驚訝的是,這些都不公開。去搞清楚。 – dmon 2011-10-17 15:38:33
如果你實際使用的是keyDown,你應該返回true而不是調用super – njzk2 2012-11-05 13:37:03
的確如此,我已經更正了我的答案。 – pgsandstrom 2012-11-05 14:23:26