2010-04-22 133 views
6

所以我在我的應用程序中有一個巨大的活動迷宮。我需要做的是,當用戶登錄系統時,活動歷史記錄應該被清除。當我開始一個新的活動時,我不能使用finish(),因爲我希望這些活動有一個歷史記錄,直到用戶登錄爲止。我在開始一個活動時嘗試了不同的標誌,但是我沒有成功。有任何想法嗎?開始活動並清除活動歷史記錄

乾杯,

回答

2

我也可以透露我目前使用的解決我的問題的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的手機上,動畫變得不正確。此外,它不是超級整潔,需要更多的代碼,然後我更喜歡。儘管如此,它的工作原理...

+0

這完全爲我工作,而不是真的那裏)。謝謝!我打算用默認的動畫ID完成這個工作,但令我驚訝的是,這些都不公開。去搞清楚。 – dmon 2011-10-17 15:38:33

+1

如果你實際使用的是keyDown,你應該返回true而不是調用super – njzk2 2012-11-05 13:37:03

+0

的確如此,我已經更正了我的答案。 – pgsandstrom 2012-11-05 14:23:26

1

你可以嘗試模擬「迴歸」到以前的活動(即,當然,當使用65536,而不是Intent.FLAG_ACTIVITY_NO_ANIMATION爲早期版本