我正在做一个基于反应的Android游戏,包含多个级别。
在第1级中,我希望ImageView以快速随机间隔从红色变为绿色,用户在绿色时点击ImageView来获得分数。
我使用一个单独的类来运行AsyncTask,随机地随机更改ImageView的背景颜色。代码包含在while循环中,它检查levelPoints是否达到50(这些点会上升,具体取决于level1类中的OnClick事件)。
以下是问题 - 背景的颜色会改变一次,并且在while循环期间不会改变。我已经使用Log.v来找出随机数和级别点的状态,这似乎表明循环工作正常。
该项目是WIP,但我认为这部分应该处于一个阶段,我可以通过点击绿色50次结束循环来测试它。不是这样的。
在while循环期间,为什么颜色不会发生变化,我们不胜感激。我搜索过StackOverflow和其他网站/论坛的类似问题,但找不到任何类似的性质。
以下是GitHub上有关文件的链接
答案 0 :(得分:0)
因为你正在从后台线程上运行的doInBackground方法更新颜色,你应该从postExecute方法更新ui上的任何内容,或者如果你必须从doinbackground方法更新,你应该使用publishProgress方法和onProgressUpdate方法。
postExecute,publishProgress,onProgressUpdate方法在UI线程上运行,其中doInBackground方法在后台线程上运行。
如果你想从doInBackground方法更新任何东西,你应该在调用onProgressUpdate方法的doInBackground方法中使用publishProgress方法。