2010-07-22 63 views
3

我想在應用程序崩潰之前執行一些緊急清理代碼。我嘗試使用onDestroy(),onFinal()和finalize()無濟於事。這在Android活動中可能嗎?強制關閉Android活動之前的回調?

+1

強行關閉=活動寫的不好。 – Jorgesys 2010-07-22 23:05:59

+5

@Jorgesys,我曾經使用過的每一款應用都是「寫得不好」,或者有無法預料的情況導致所有應用崩潰(最好不要經常)。 – 2011-11-30 21:17:41

+1

寫得不好,閱讀本文... http://developer.android.com/intl/fr/guide/practices/design/responsiveness.html 我最近發佈了我的應用程序的新版本和所有的力量關閉在最新版本之後顯示的消息已經消失,Asynchtask的實現即使在連接速度很慢的情況下也能夠完成這項工作。 http://developer.android.com/intl/fr/reference/android/os/AsyncTask.html – Jorgesys 2011-11-30 22:31:26

回答

2

那麼,我會建議不要讓你的應用程序崩潰在第一個地方。如果有什麼事情可能會發生,只要在它周圍放一個試管/抓住它並妥善處理。或者,您可以使用Thread.setUncaughtExceptionHandler()作爲某種全球性嘗試/捕捉功能。最後,你甚至可以考慮Runtime.addShutdownHook,但這很可能是一個壞主意。

+0

I'我會試試這個。我正在使用硬件加速器,所以當Android加載我的新程序時,它不會調用停止或任何其他內容,並導致我的其他進程處於錯誤狀態。 – Frank 2010-08-02 17:40:38

0

只是實現錯誤處理,並調用您的清理代碼。

try { 
... 
... 
... 
} catch (Exception e) { 
cleanupcode();//cleanup code execute just before my app crashes 
e.printStackTrace(); 
} 

你不會看到強制關閉對話框,但如果你想強制關閉只需調用

super.finish();