2015-04-06 132 views
0

我需要運行一些代碼,當一個應用程序啓動時,當它完全退出(被銷燬)。我正在使用onCreate和onDestroy,但不幸的是屏幕方向的變化破壞並重新創建活動。如何知道何時啓動並銷燬Android應用程序?

+0

指定您的清單,你處理配置的變化(潛在的人的名單在每個API版本中獲得更長的時間)。請注意,儘管如此,並不能保證該進程能夠存活足夠長的時間,以便調用onDestroy()。 –

回答

2

看看Android應用程序http://developer.android.com/reference/android/app/Application.html

你可以知道什麼時候創建(Application.onCreated)應用

,但你不能申請毀壞了,當知道。 Application.onTerminate()僅用於仿真過程環境。

+0

這似乎是一種好方法。我需要將一個變量傳遞給構造函數。有沒有辦法做到這一點? – dliu120

+0

回答了我自己的問題:http://developer.android.com/guide/topics/manifest/meta-data-element.html – dliu120

0

每當應用程序啓動onCreate方法啓動器活動被調用。因此,您必須將所需的代碼放入啓動器活動的onCreate方法中。

,並檢測您的應用程序是否被破壞或沒有你可以overrideonDestroy方法(就像添加onCreate)從覆蓋未實現的方法菜單。並將代碼放入此應用程序將被銷燬時要執行的方法中。

+0

這不起作用,因爲當屏幕方向更改時,活動將被銷燬並重新創建。我不會在這些情況下在onCreate和onDestroy中運行我的代碼。 – dliu120

+0

您想修正屏幕方向,還是需要在您的應用中啓用定位功能? –

+0

需要在應用中保持定位功能 – dliu120

0

你可以試試這個,如果你的代碼可以在後臺發生(如果你需要的東西,發生在UI線程將無法正常工作):

讓你的活動保留對您的擴展線程的引用,我們稱之爲MyThread操作符。

在的onCreate,做到這一點:

if(operator==null){ 
    operator = new MyThread(); 
    operator.start();  
} 

然後,在MyThread的,把你的代碼中的兩個方法run()interrupt()

當您的活動通過方向更改重新創建時,它會使操作員對後臺線程保持警惕。當您真正關閉應用程序時,android會在幾秒鐘後終止您的運營商,並因此執行您的代碼。

有人糾正我請,如果我錯了,我還沒有睡太久最近和線程始終是一個複雜的話題......

相關問題