我可能阅读了关于该主题的每个教程和每个论坛讨论,但仍然无法实现!这非常令人沮丧。
似乎这样做的方法是将executeOnExecutor()方法与-AsyncTask.THREAD_POOL_EXECUTOR一起使用,所以我在我的代码中这样做了。但是,第二个任务仅在第一个任务完成后才被执行,而不是同时执行。
我的 min sdk 版本是 2.3,最大值是 4.2,所以我做了检查:
if (android.os.Build.VERSION.SDK_INT >=android.os.Build.VERSION_CODES.HONEYCOMB) {
engine.setEnginesTurn(true);
engineThread = new EngineThread(board,engine,activity,boardView);
rt = new RotateTask(boardView);
engineThread.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
rt.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
else{
engine.setEnginesTurn(true);
engineThread = new EngineThread(board,engine,activity,boardView);
rt = new RotateTask(boardView);
engineThread.execute();
rt.execute();
}
忽略这里的布尔变量..它不相关,还有其他代码,因为你想知道为什么我没有发布它。这是一团糟,但一切正常,执行这两个任务。我究竟做错了什么?
我希望这两个任务并行运行的原因是:第一个任务是计算任务,另一个是计算机思考时的自定义沙漏图像旋转动画(它是一个游戏应用程序)。
编辑:啊..只是想包括我不在主 UI 线程上做动画是因为我使用 sleep() 动画,所以不能冻结主线程。