2012-01-06 163 views
0

我的應用程序的主要活動正在「銷燬」。我有一個銷燬日誌消息,正在打印。但是完成被調用的路徑沒有被執行。android:用於銷燬的堆棧跟蹤

所以我想知道如何找出什麼觸發destroy()被調用。它是否完成我的代碼或任何其他系統錯誤。

@Override 
protected void onDestroy() { 
    try { 
     super.onDestroy(); 

     Log.i("StartUpActivity", "OnDestroy"); 
     if (asyncTaskForSync != null && !asyncTaskForSync.isCancelled()) 
      asyncTaskForSync.cancel(true); 
     if (DatabaseManager.getInstance() != null) 
      DatabaseManager.getInstance().close(); 

     if (Utils.imageLoader != null) 
      Utils.imageLoader.stopThread(); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 

} 

注:答: 我一直保持的android:noHistory = 「真」 爲我的啓動活動。我希望這個頁面不會在其他活動的背景中再次顯示。而且我已經把所有清理工作都像db一樣關閉在這個活動的摧毀之中。因爲nohistory = true,所以這個活動自動獲得了許可,導致所有資源關閉,從而導致我的應用程序出現異常。

我通過刪除該標誌糾正了錯誤,並且糾正了第二項活動的不良後果。

感謝您的回答

+1

...你叫完成()在你的程序在哪裏?只有當您按下移動設備的默認後退按鈕或您已完成寫入的按鈕時,纔會調用onDestroy,或者在完成特定事件後可能會在您的asyncTask中,因爲它可以從您的代碼中看到 – Maverick 2012-01-06 15:24:37

+0

謝謝,我的問題是不同。感謝您的線索和您的時間我已編輯我的問題與答案 – png 2012-01-06 15:55:15

回答

1

活動可能被破壞的原因有幾個。例如。如果用戶旋轉設備,則默認行爲是銷燬活動並創建一個新活動。

請參見「處理配置更改」這裏http://developer.android.com/guide/topics/fundamentals/activities.html

+0

非常感謝您的幫助和時間。我已經用我的案例和解決方案更新了我的問題。再次感謝 – png 2012-01-06 15:56:09