本主題繼續這樣的: Android. How to start activity without creating new one?如何重用活動?不創建活動,每次
我已閱讀,活動被破壞時,單擊後退按鈕。 當它們移動到堆棧然後再調用活動時,它們不會被銷燬。使用android:launchMode="singleTask"
例如
當我單擊按鈕BACK並再次運行活動時,是否有可能不會銷燬活動?
本主題繼續這樣的: Android. How to start activity without creating new one?如何重用活動?不創建活動,每次
我已閱讀,活動被破壞時,單擊後退按鈕。 當它們移動到堆棧然後再調用活動時,它們不會被銷燬。使用android:launchMode="singleTask"
例如
當我單擊按鈕BACK並再次運行活動時,是否有可能不會銷燬活動?
你可以重新定義你的活動的「onBack」的方法,像
public void onBackPressed()
{
moveTaskToBack (true);
}
返回按鈕的默認實現的東西是完成當前活動。然而,你可能會攔截那個按鍵並按照你的意願做任何事情。例如,您可以「完成」以前的活動,而不是完成當前的活動,從而使其看起來好像正常實施即將到來。
攔截後退按鈕按下:Android: intercepting back key
,並不會產生一個新的每次開始以前的活動:
Intent i = new Intent(View.getContext(), PreviousActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(i);
好運。
+1 Thanks.It working fine –
我發現這個答案很有用,但是對毫無戒心的開發人員提出了警告:當你需要一個Context時,**請不要使用Application Context **,除非你知道你在做什麼。在這種情況下,您只需傳遞'this'(當前的Activity實例)而不是Application Context。 –
謝謝你們......你節省了我的時間...... !!! –
您可以在關閉時,你壓回button.You也可以用下面的方法禁用後退按鈕
public void onBackPressed()
{
//super.onBackPressed();
}
,你也可以開始新的活動停止活動如果後退按鈕用戶點擊喜歡
public void onBackPressed()
{
startActivity(new Intent(context, newActivity.class));
}
其實你應該完成活動,如果用戶按下返回按鈕 .else可以有更多的活動將駐留在回棧,所以可能會有內存問題,所以在這種情況下,Android會摧毀你的活動這些領帶已停止並且不會在很長時間內恢復。
請注意:新的'onBackPressed()'方法需要API 5或更高版本。對舊設備使用onKeyDown。 –
'onBackPressed()'需要API7及更高版本,所以如果我們要實現低於API5,我們必須使用onKeyDown – Dharmendra
我錯過了什麼?我仍然認爲它是[API5](http://developer.android.com/reference/android/app/Activity.html#onBackPressed())。:) –
我不會建議,因爲用戶可以選擇按主頁按鈕來做到這一點(如果它需要內存,Android會殺死你的應用程序)。由於這樣的決定,用戶開始使用混亂的任務殺手(在我看來)。然後,開發人員正在努力使他們的應用程序工作,因爲用戶正在通過任務殺手來殺死他的應用程序......不要惹惱android生命週期;-) – Knickedi
爲什麼你甚至想要這樣做? I.不能想到單一的好處。 – frostymarvelous
一個好處是,如果活動佈局複雜並且需要10秒鐘才能被加載,然後可以節省10秒,重新使用該活動而不需要從頭開始創建它。 – Ehsan