1

스레드 내부에서 창 플래그를 추가하고 지우고 싶지만 작동하지 않습니다. 기본적으로 내 스레드가 2 초 동안 화면을 유지하고 플래그를 화면에 지우고 싶습니다.스레드 내부에서 창 플래그 추가 및 지우기

public class WriteCommThread extends Thread { 

    private long time=2000; 

    public WriteCommThread(float count) { 


     time = (long) count; 

    } 

    public void run() { 
     while(connectionUnAbort==true){ 
      // Lock screen 
      getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
      slleep(); 
      //Unlock screen 
      getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
      connectionUnAbort=false; 

     } 
    } 

public void slleep(){ 
     try { 
      Thread.sleep(time); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     } 
} 
+0

connectionUnAbort 변수를 true로 설정하고 시간 변수를 초기화 한 다음 스레드를 시작하십시오. –

답변

1

나는 내가 언급 된 링크를 게시하고, 연구를 수행 한 후 그것을 해결 :

여기 내 코드입니다.

Answer Link

여기 내 문제에 대한 내 솔루션 그리고 그것은 완벽했다. 내 백그라운드 스레드 (run 메서드) 이러한 runnable 클래스를 추가했습니다. 그리고 자고 난 후에 나는 스크린을 계속 켜기 위해 깃발을 지울 수 있었다.

runOnUiThread(new Runnable() { 
       public void run() { 

      //stuff that updates ui 
        MainActivity.this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
       } 
      }); 

runOnUiThread(new Runnable() { 
       public void run() { 

      //stuff that updates ui 
        MainActivity.this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
       } 
      });