2011-04-08 168 views
-2

管理在後臺工作的線程的正確方法是什麼?處理線程

例如,我有創建多個線程的活動。我需要做以下幾點:
1)消滅所有線程時應用程序被破壞
2)暫停活動中創建的線程,如果用戶從活動
3導航離去的),如果活動被破壞

銷燬活動中創建線程

我唯一想到的就是將所有線程變量聲明爲public,以便能夠在上面列出的這些事件上發出t.destroy()或類似的東西。 首先,我不確定這是否是正確的方式,其次,我不喜歡它,因爲我將不得不更改代碼以確保我可以引用創建的所有線程。

例如,我有我的活動實例化新對象(例如LoadImages.class),並且對象根據要加載的圖像數量創建多個線程的情況。線程在調用活動中不可見。

那麼,我是否必須將線程引用傳遞給調用活動,或者有一些方法可以知道誰是線程的父節點,並且只銷毀具有特定父Activity的線程?

回答

0

對於LoadingImages我覺得這是一個簡單的解決方案:對LoadingImage的公共方法稱爲release,將允許它來釋放自己的資源。

如果您的每項活動都在破壞自己的線程,我不認爲您需要執行第1步。

+0

是的。你是對的。不需要步驟1.如何銷燬線程?你是否繼續參考創建的每個線程(在LoadingImage中),以便銷燬或停止它們(在發佈中)? – bobetko 2011-04-08 15:23:31

+1

那麼,通常你應該使用'AsyncTask'並調用'task.cancel(false)'。 'Thread'沒有公開一個好的停止界面。查看http://developer.android.com/reference/java/lang/Thread.html#destroy() – 2011-04-08 15:32:43

+0

使用AsyncTask看起來似乎是提供取消方法的最佳方式。我已更正我的代碼並將新方法添加到加載類中,一切都很好。 – bobetko 2011-04-08 21:16:17