2011-05-02 63 views
0

我有一個活動,在工作線程加載我的遊戲時顯示加載屏幕。加載工作線程時會在活動上更新文本視圖以顯示其當前狀態。完成後,它將關閉加載活動並開始實際的遊戲活動。 工作者線程在onCreate()方法中創建並被賦予一個新創建的處理程序。處理加載活動線程的最佳做法

但是,當活動被銷燬並重新啓動時會發生什麼,例如由方向改變?恕我直言,onCreate()方法將創建一個新的工作線程,而第一個工作線程仍在加載,所以現在我有多個工作線程執行相同的操作。

什麼是防止這種情況並通知工作者線程有關新活動(以便它可以發佈其狀態更新)的最佳方法。

+0

不說這是最好的,但它可以調用onPause中的取消 - >保護無效onPause(){ super.onPause(); if(asynch!= null){asynch.cancel(true);} } – JAL 2011-05-02 18:15:08

回答

0

你綁定了DroidFu庫嗎?它有一個名爲BetterAsyncTask的類,它似乎旨在擺脫你所說的問題。你可以在這裏找到這個庫(https://github.com/kaeppler/droid-fu)和一篇關於你的問題和droidfu的文章(http://brainflush.wordpress.com/2009/11/16/introducing-droid-fu-for-android-betteractivity-betterservice-and-betterasynctask/ - 請參閱「That Dratted AsyncTask」部分)。

+0

感謝您的信息。雖然我沒有使用庫本身,但改編了一部分代碼。 – 2011-05-03 12:50:04