2 개의 클래스가있는이 프로젝트가 있습니다. activity_main에는 2 개의 버튼이 있으며, button1은 스레드를 실행하고 button2로 중지하려고하지만 스레드가 실행되는 동안 button2는 클릭 할 수 없으므로 작동하지 않습니다. 마지막으로 AVD가 프로그램을 중지합니다. 제발, 어떤 제안 ???스레드 오작동
미리 확인하십시오. 별도의 스레드에서 Thread
인스턴스를 실행하려면 activity_main.xml
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="gestionbotones"
android:text="Thread ON" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="gestionbotones"
android:text="Thread OFF" />
MainActivity.java
public class MainActivity extends Activity {
.......
private HiloJuego hj = new HiloJuego();
.......
public void gestionbotones (View v){
int id = v.getId();
switch(id){
case R.id.button1 :
Log.d(TAG, "Thread activado");
hj.setRunning(true);
hj.setTurno(true);
hj.run();
break;
case R.id.button2: // Desactivar
hj.setRunning(false);
Log.d(TAG, "Thread destruído");
break;
default:
break;
}
}
HiloJuego.java
package com.example.tocatoca1;
import android.util.Log;
public class HiloJuego extends Thread {
private static final String TAG = HiloJuego.class.getSimpleName();
private boolean running;
private boolean turno;
public void setRunning(boolean running) {
this.running = running;
}
public void setTurno(boolean turno){
this.turno=turno;
}
public HiloJuego() {
super();
}
@Override
public void run() {
Log.d(TAG, "Starting game loop");
while (running) {
if (turno){
Log.d(TAG, "Turno Ordenador");
} else{
Log.d(TAG, "Turno Jugador");
}
} // end finally
}
}
mainactivity.java는 한 번만 실행됩니다. –
@AsierAranbarri 그리고? – m0skit0
+1 자기 멍청에 대해 –