我有一个方法playSoE()
,它对每个视图执行操作,并在每次操作后更新ArrayAdapter,从而更新GridView。我想要做的是在更新完成后让代码等待1秒,然后在下一个视图上执行操作。例如:
public class MainActivity extends Activity{
public void playSoE(){
for(int i = 0; i < primesLE; i++) //iterates to each view
mAdapter.setPositionColor(index, 0xffff0000 + 0x100 * index); //operation performed on view
mAdapter.notifyDataSetChanged(); //updates adapter/GridView
//Code that waits for one second here
}
}
我尝试了很多线程API,但它们似乎都没有工作,他们要么冻结应用程序primesLE
秒并在最后显示所有操作,跳过第二次等待并执行所有操作立即执行,或者获得与并发相关的异常。
答案 0 :(得分:1)
假设更新本身很快,您根本不应该创建其他线程。创建Handler
并使用postDelayed(...)
在UI线程中计算更新时间。
答案 1 :(得分:0)
您可能需要查看AsyncTask。
将等待代码放在doInBackground()
,然后影响onPostExecute()
上的视觉效果的
您在doInBackground()
上所做的一切都不会冻结您的申请。