2014-10-20 158 views
0

我有一個應用程序,它被切換到後臺,當用戶按後退按鈕 -活動不被破壞

@Override 
public void onBackPressed() { 
    Intent setIntent = new Intent(Intent.ACTION_MAIN); 
    setIntent.addCategory(Intent.CATEGORY_HOME); 
    setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(setIntent); 
} 

所以唯一的辦法,用戶將關閉該應用程序是使用task manager和手動停止。現在

,我試圖通過關閉使用task manager我的應用程序在我的Android設備, 然而,在Android Studio的應用程序來測試我的onDestroy似乎還活着,它說Session: '<app_name>' : runningonDestroy不叫。

這是爲什麼,我該如何解決?

**我想要看到onDestroy在我停止我的應用時使用task manager並手動停止它,因爲用戶如果要關閉我的應用時必須這樣做,而不是按回來按鈕。通過按回來按鈕應用程序將活着,它的罰款,這是我想要的。

+0

我不相信當您通過任務管理器停止應用程序時,將會調用onDestroy或任何其他函數。我相信它確實會殺死這個過程,並且不會讓你的應用程序有機會做任何事情。 – Randy 2014-10-20 18:40:00

回答

0

設置開發人員選項,轉到應用部分,並啓用「不保留活動」選項。 然後,每次你點擊後退按鈕,應用程序將被銷燬。 我要覆蓋的後退按鈕動作來破壞應用程序,你可以在你的活動覆蓋的onkeydown

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) 
    { 
     finish(); 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

找不到它 – user2162550 2014-10-20 17:34:38

+0

在設備的開發人員設置http://media02.hongkiat.com/android-developer-options-hidden-features/dont-keep-activities.jpg – JoaoBiriba 2014-10-20 17:35:08

+0

好的,看到它,它的工作原理,但我需要以相同的方式測試應用程序,就像它以正常的方式運行,我的意思是,通過後退按鈕,它應該去背景,而不是被銷燬,當用戶停止應用程序,應該調用'onDestroy'。你的建議是當用戶按下後退按鈕時銷燬應用程序。 – user2162550 2014-10-20 17:42:02

0

致電finish()銷燬活動。

@Override 
public void onBackPressed() { 
    Intent setIntent = new Intent(Intent.ACTION_MAIN); 
    setIntent.addCategory(Intent.CATEGORY_HOME); 
    setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(setIntent); 
    finish(); 
} 
+0

什麼時候該打電話給我?我需要在用戶停止應用程序時執行此操作。 – user2162550 2014-10-20 17:24:13

+0

更新了代碼。 :) – Swayam 2014-10-20 17:34:42

+0

謝謝,但我需要它的工作,當用戶手動停止應用程序,我會編輯我的問題 – user2162550 2014-10-20 17:36:03

0

您可以撥打finish();,爲前,後startActivity(setIntent);

或者,你可以打電話super.onBackPressed();,也最後。

+0

抱歉,這不是我問的問題 – user2162550 2014-10-20 17:52:05

2

爲什麼要重新啓動後面按下的活動?什麼都不做。

@Override 
public void onBackPressed() { 
} 
+0

請參閱已編輯的問題 – user2162550 2014-10-20 17:52:39

+0

根據Google的文檔,onDestroy()是一個不可靠的鉤子。它不會在自動清理應用程序時觸發,也可能不會在手動中執行。 – 2014-10-20 20:40:03