2010-11-04 54 views
4

我正在尋找完全關閉我的應用程序的按鈕的代碼。如何以編程方式關閉應用程序?

我嘗試了一些Google的東西,但我的應用程序仍在後臺運行。我需要完全關閉它。有沒有這樣的代碼?

+1

有時例外是一種方式去。 :)他們肯定會** **你的應用程序。 – 2010-11-04 17:46:34

回答

6

爲什麼你需要真正關閉你的應用程序?假設這只是一個普通的應用程序,並沒有運行任何後臺服務或持有喚醒鎖(你會知道如果你正在做這些事情),該系統做了很好的任務管理工作,並且會在你的應用程序停止後,並且需要時結束RAM沒有任何人工干預。通常如果你只是finish()你的基地Activity這將發生在它自己的,但幾乎沒有理由這樣做。

(唯一的例外是,如果您的Application以某種方式持有對已完成活動的引用,這會引起醜陋的內存泄漏並阻止您的應用正常關閉,但是您也可能知道自己是否用重寫的Application子類做任何事情。)

即:如果要強制關閉應用程序,99%的時間需要修復代碼中的任何錯誤使您認爲系統無法自行處理它,或者您需要再次重讀documentation on the Android application lifecycle(因爲在開始編寫Android應用程序之前,您應該已經閱讀了3次))。

4

也許這個鏈接將幫助developer page

我引用下面的部分,我認爲可能會幫助你。

關閉部件

內容提供商,而它的響應來自ContentResolver的一個請求 僅 活性。而一個 廣播接收器僅在 有效時纔會響應廣播 消息。所以不需要 明確地關閉這些組件。

另一方面,活動提供了 用戶界面。他們正在與 用戶進行長時間運行的對話 ,並且可能保持活動狀態,即使 處於空閒狀態,只要對話 繼續。同樣,服務可能也會長時間運行。 所以Android有方法來關閉 活動和服務有序 方式:

活動可以通過調用finish()方法關閉。一個 活動可以通過調用 finishActivity()來關閉另一個 活動(它以 startActivityForResult()開頭)。

可以通過調用stopSelf()方法或通過調用Context.stopService()調用 來停止服務。

組件也可能被 系統或關機時,他們不再 使用時必須Android的回收 內存更積極 組件。稍後的部分,組件 生命週期,更詳細地討論了這種可能性 及其後果。

0

必須記住:

finish(); 

方法只關閉當前活動。 如果您打開了多個活動,則應該爲每個活動調用finish()。

注意:關閉服務是不同的。

4

您可以關閉從後臺的所有活動,並當重新打開應用程序從第一次活動開始

this.finish(); 
Intent intent = new Intent(getApplicationContext(), CloseApp.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

您可以從後臺關閉所有活動並重新打開應用程序時它從暫停活動開始[你關閉]活動

this.finish(); 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
相關問題