2

我有一个方法playSoE()在每个视图上执行一个操作并在每次操作后更新ArrayAdapter和GridView。我想要做的是让代码在更新完成后等待1秒钟,然后在下一个视图上执行操作。例如:Android GridView和线程等待

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

您可能需要查看AsyncTask

将等待代码在doInBackground(),然后影响在onPostExecute()

所有你doInBackground()做视觉不会冻结您的应用程序如下。

+0

你建议等待代码是什么?我正在尝试使用之前使用的相同API,并且它们仍然导致相同的行为。 – user2361174

1

假设更新本身很快,你根本不应该创建额外的线程。创建Handler并使用postDelayed(...)在UI线程中更新您的更新。