2013-04-30 3 views
0

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 
} 
} 
+0

mainactivity.java는 한 번만 실행됩니다. –

+1

@AsierAranbarri 그리고? – m0skit0

+0

+1 자기 멍청에 대해 –

답변