2011-12-01 98 views
1

在我的應用程序中,有時候可能需要很長時間才能加載一些值(例如從Google地圖中檢索行車路線)。這會導致啓動「等待」警報對話框。我希望知道單擊Force關閉按鈕時會發生什麼?我的意思是啓用強制關閉時將運行什麼代碼?我們是否可以手動調整「等待」警報對話框出現的時間?如果不是這個對話框出現的默認時間是什麼?Android:關閉後的活動週期

回答

2

我知道它有時可能很煩人,但他們幾乎故意地(在我看來)確保程序員確保他們的應用程序順利運行,沒有UI凍結。 我現在無法找到它的文檔,但如果我記得正確它的約4秒.. 你只需要確保沒有UI凍結或延遲你的應用程序,這意味着如果你的值需要更多,然後加載幾秒鐘,他們應該加載異步。
您需要將主要活動中的任何重物從異步運行(使用async taskthread)。

+0

它主要發生在我試圖從谷歌地圖獲取駕駛路線時! – freshDroid

+0

是的。任何在線數據拉應該異步發生。因爲你不知道用戶連接有多強,或者從服務器拉取數據需要多長時間,所以你不能讓你的用戶等待(凍結用戶界面)等待數據..它必須在一個線程或異步任務,所以主要活動不會等待數據。即使您的應用需要一小時才能加載,只要您的主要活動未凍結即可。 – Joe

+0

我們是否可以管理強制關閉後啓動的頁面? – freshDroid

0

據我所知,當你進入該對話框時,Android操作系統已經接管並正在殺死你的進程。如果這是經常發生的事情,那麼應該使用堆棧轉儲來確定哪些應用程序崩潰。

1

您應該在Android線程上閱讀this article

你永遠不想在你的主線程上執行任何長時間運行的任務。如果該操作需要超過幾分之一秒的時間,則應該使用AsyncTask或創建自己的後臺線程來執行任務。

0

您不應該在事件線程上進行耗時的初始化。你應該啓動後臺線程(或AsyncTask)來完成初始化工作。請參閱指導主題Designing for Responsiveness。後續閱讀應包括Processes and ThreadsPainless Threading

+0

我們可以管理強制關閉後啓動的頁面嗎? – freshDroid

+0

@freshDroid - 我不這麼認爲。操作系統已經接管並正在殺死你的應用程序。 –

+0

所以唯一的辦法是避免所有發射力等待的情況? – freshDroid