2013-09-23 3 views

답변

0

당신은 간단한 부울

private boolean imAwake = false; 

@Overwrite 
protected void onCreate(Bundle savedInstanceState) { 
    new Handler().postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      imAwake = true; 
     } 
    }, 3000); 
} 

과 실행에서 계속 그리고 부울 전에 실행 코드를 방지 할 수있는 사실이다 :

bfqs.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     public void onCheckedChanged(CompoundButton buttonView, 
       boolean isChecked) { 
       if (imAwake) { 
        if(isChecked==true){ 
         String[] command = {"su", "-c", "echo \"" + "1" + "\" > " + FILE}; 
         ShellCommand.run(command); 
        } 
        else{ 
         String[] command = {"su", "-c", "echo \"" + "0" + "\" > " + FILE}; 
        ShellCommand.run(command); 
        } 
       } 
     } 
     }); 

편집 :

윌리엄의 대답에 대한 당신의 의견을 보았습니다. 내가 이해할 때, OnCheckedChangeListener는 app가 startet 일 때 상호 작용없이 호출됩니다. 그리고 그것은 원하지 않는 행동입니다, 맞죠?

저는 현재 값을 설정하기 위해 앱을 만들 때 OnCheckedChangeListener가 호출된다고 생각합니다. 그래서 당신이해야 할 일은 마지막 값을 저장하여 참/​​거짓을 검사 할뿐만 아니라 그 값이 처음으로 설정 (앱을 처음 시작한 경우)하고 이전에 저장 한 값으로 설정 한 경우 두 인스턴스 모두 코드를 실행하지 않으려는 경우입니다.

0

타이머 개체를 사용해보세요.

Timer mTimer = new Timer(); 
mTimer.schedule(new TimerTask() 
{ 
    @Override 
    public void run() 
    { 
     // Your code goes here 
    } 
}, 1000); // 1sec 
+0

지연을 방지하기 위해 실행을 막고 싶습니다. 코드를 실행할 때 코드를 실행할 필요가 있습니다. 애플리케이션을 시작하지 않습니다. – AlphaVladim