我正在Android Studio中开发一款Whack-a-mole游戏,我在使用AsyncTask时遇到了困难(我们的老师告诉我们要使用它)。
基本上,AsyncTasks没有做任何事情。
我尝试使用一个asynctask来增加一个int值,并在每次增加新值时都使用新值更改文本视图,但是它对于我想要的工作不起作用。
TextView tv;
ImageView iv1;
ImageView iv2;
ImageView iv3;
ImageView iv4;
boolean salir = false;
int puntuacion = 0;
int vidas = 3;
Hilo hilo;
Hilo hilo2;
Hilo hilo3;
Hilo hilo4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
tv = findViewById(R.id.textView);
iv1 = findViewById(R.id.imageView);
iv2 = findViewById(R.id.imageView2);
iv3 = findViewById(R.id.imageView3);
iv4 = findViewById(R.id.imageView4);
hilo = new Hilo(iv1);
hilo2 = new Hilo(iv2);
hilo3 = new Hilo(iv3);
hilo4 = new Hilo(iv4);
hilo.execute();
hilo2.execute();
hilo3.execute();
hilo4.execute();
}
public void updatePuntuacion() {
tv.setText("Puntuacion: " + puntuacion);
}
public void updateVidas() {
}
private class Hilo extends AsyncTask<Void, Void, Integer> {
boolean estado = false;
ImageView img;
public Hilo (ImageView img) {
this.img = img;
}
@Override
protected Integer doInBackground(Void... voids) {
while(!salir){
img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (estado) {
puntuacion++;
updatePuntuacion();
} else {
vidas--;
updateVidas();
}
}
});
if(estado) {
try {
Thread.sleep(Math.round(Math.random()*5000+2000));
} catch (InterruptedException e) {
e.printStackTrace();
}
img.setImageResource(R.drawable.topo);
estado=true;
publishProgress();
} else {
try {
Thread.sleep(Math.round(Math.random()*3000+1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
img.setImageResource(R.drawable.blank);
estado=false;
publishProgress();
}
if(puntuacion == 100) {
salir=true;
}
if(vidas == 0) {
salir = true;
}
}
return puntuacion;
}
}
我希望imageviews每隔X秒更改一次图像(随机发生),但不会。
我希望你们能为我提供帮助,谢谢!!!
答案 0 :(得分:0)
您需要了解异步任务的工作方式。 您无法在“ doInBackground”中完成所有工作。
请仔细阅读此https://developer.android.com/reference/android/os/AsyncTask 了解什么是异步任务首先