這是我經常使用Asyntask時遇到的一個問題。聯繫UI線程的方法是調用publishProgress()&此方法接受只有一個參數類型的數組。如何讓Asynctask以不同的方式更新UI
在後臺運行,這樣做複雜的計算可能需要更新使用不同類型對象在不同的點UI線程。
讓我說明一個例子:
...do some processing...
// Send UI thread the integer values of the width & height of the image
...do some more processing...
// Send UI thread a String with custom message.
...do some more processing...
// Send UI thread an instance of MyObject so it can extract & display certain values
...do some cleanup job & finish...
然而,onProgressUpdate()接受僅一種類型的陣列。
那麼,我做出一個包羅萬象的對象類型?我怎麼知道如何下調它,因爲這個方法可以從第1,2或3行調用,所以這是什麼時間?
當然必須有一個很好的方法來實現這一目標?
編輯:我真的很想看看,如果在Android中是可能的,將是界定publishProgress1(用戶定義args1),publishProgress2(用戶定義args2),publishProgress3的一些方法(用戶定義的args3) ...
我相信,你所要求的類似的變體結構http://en.wikipedia.org/wiki/Variant_type – JAL 2011-04-15 01:52:50
@JAL:感謝您分享有趣的鏈接。使用運行時類型確定的Variant_type通過運行時向下轉換提醒了我非常多的Java對象類型。我真的很希望看到,如果它可能在Android中,將會是定義* publishProgress1(用戶定義的args1)*,* publishProgress2(用戶定義的args2)*,* publishProgress3(用戶定義的args3) * ... – OceanBlue 2011-04-15 14:27:14
@OceanBlue VisualBasisVARIANT是一箇舊的解決方案,但我寧願看到更安全的解決方案,可能會解決使用消息和單個處理程序來啓動三個順序線程的問題。因此,啓動返回類型A的線程返回消息(0),處理程序中的陷阱消息,啓動帶消息的線程(1)返回類型B,帶消息(2)的陷阱和啓動線程等。 – JAL 2011-04-16 00:25:35