2015-01-08 2 views
-1

검색했지만 해결책을 찾지 못했습니다. 스레드에서 무한 게임 루프가 실행 중입니다. 매우 길기 때문에 (조건) 동안 내 앱을 종료하고 사용하면 Android에서 계속해서 다른 애플리케이션을 시작합니다. 어떻게 중지시킬 수 있습니까? 스레드에 인터럽트 신호가있는 경우 모든 방법 사이를 확인해야합니까?LONG 무한 루프를 벗어나는 방법

+7

정말이 질문에 대한 답변에 관심이 있지만 짧은 무한 루프입니다. – Emmanuel

+0

종료 지점에서 System.exit (0)을 넣습니다. –

답변

2

루프가 다른 스레드에서 실행되면 함께 확장되는 사용자 정의 스레드를 만들 수 있습니다. 간단한 방법으로 중지 방법을 추가하면 완료됩니다.

아이디어 :

private boolean run = true; 

public class MyThread extends Thread{ 

    public void stopThread(){ 
     run = false; 
    } 

    @Override 
    public void run(){ 
     while(run){ 
      //large code block 
      if(!run)break; //to make sure the thread will stop in time 
      //another large code block 
     } 
    } 
} 

단순히 myThread.stopThread()를 호출 거의 즉시 중지합니다.

취소 (boolean) 메서드가있는 ASyncTask를 사용하여 즉시 중지 할 수도 있습니다.

+0

하지만 여러 스레드가 실행중인 경우 다른 익명 스레드를 시작하는 스레드가 있습니다. 어떻게 그 스레드를 함께 중지시킬 수 있습니까? – user3642735

+0

동일한 답변이므로 중요하지 않습니다. –

+0

이것은 Thread.stop()과 관련되어있었습니다. onPause()에서이 실행 플래그를 사용하면이 방법으로도이를 해결할 수 있지만 일부 정보가 손실 될 경우에만 활동을 종료하려는 경우 중요하지 않습니다. btw 나는 asynctask 짧은 기간 동안에만 스레드 에서이 gameloop처럼 사용되어야 읽어 봤어? – user3642735

관련 문제