我在我的佈局中有數百個CheckBox小部件,現在我正在嘗試對它們進行反轉,所以如果檢查它不會被檢查,反之亦然。顯然,這樣繁重的工作應該在單獨的線程中完成,但問題在於所有的工作實際上都發生在UI上。線程代碼的一部分:Android從第二個線程訪問用戶界面
for (int x = 0; x < list.getChildCount(); ++x)
{
final WListRowTarget curRow = (WListRowTarget)list.getChildAt(x);
curRow.post(new Runnable()
{
public void run()
{
try
{
curRow.getCheckBox().setChecked(!curRow.getCheckBox().isChecked());
}
catch (Exception e) {}
}
});
}
,這個線程實際上能做的就是通過列表循環和張貼了Runnable每一個複選框發現的唯一的事情。問題是,所有這些Runnables幾乎同時到達UI線程,因此它們都會立即執行......應用程序的行爲與我在UI線程中運行上述代碼完全相同 - 一切都凍結。一個可能的解決方案是在每個複選框後休眠幾毫秒,以便Runnable可以執行,並且UI將有時間處理事件......但它更像是一種黑客攻擊。
我該如何解決這個問題?
由於提前, Snowak
您是否使用了列表視圖中顯示的複選框? –