2016-07-25 2 views
0

다음은 내 앱을 종료하는 코드입니다.안드로이드에서 어디에서 글로벌 메소드를 넣으시겠습니까?

나는 하나 이상의 활동이 있으므로, exitBy2Click()을 어디에 두어 모든 활동에 사용할 수 있습니까?

"Global"이라는 새 클래스를 만들려고 시도했지만 public exitBy2Click()이지만 Toast.makeText(this,...이 작동하지 않습니다.

감사합니다. 당신의 방법을 확인

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(keyCode == KeyEvent.KEYCODE_BACK) { 
     exitBy2Click(); 
    } 
    return false; 
} 

private static Boolean isExit = false; 

private void exitBy2Click() { 
    Timer tExit = null; 
    if (!isExit) { 
     isExit = true; 
     Toast.makeText(this, "click again to quit", Toast.LENGTH_SHORT).show(); 
     tExit = new Timer(); 
     tExit.schedule(new TimerTask() { 
      @Override 
      public void run() { 
       isExit = false; 
      } 
     }, 2000); 

    } else { 
     finish(); 
     System.exit(0); 
    } 
} 

답변

3

, 나는 최선의 선택이 상속 ... 당신이 그런 대신 onKeyDown()

public class BaseActivity extends Activity { 

    private static Boolean isExit = false; 

    @Override 
    public void onBackPressed() { 
     exitBy2Click(); 
    } 

    public void exitBy2Click() { 
     Timer tExit = null; 
     if (!isExit) { 
      isExit = true; 
      Toast.makeText(this, "click again to quit", Toast.LENGTH_SHORT).show(); 
      tExit = new Timer(); 
      tExit.schedule(new TimerTask() { 
       @Override 
       public void run() { 
        isExit = false; 
       } 
      }, 2000); 

     } else { 
      finish(); 
      System.exit(0); 
     } 
    } 
} 

onBackPressed()을 무시할 수 아래의 예에

주, 당신의 "진짜"이 될 것이라고 생각 활동 범위는 BaseActivity이며 이렇게하면 onKeyDownexitBy2Click이 모든 클래스와 일치합니다.

public class MainActivity extends BaseActivity { 
    @override 
    public void onCreate(Bundle savedInstance) { 
    } 
} 

public class SecundaryActivity extends BaseActivity { 
    @override 
    public void onCreate(Bundle savedInstance) { 
    } 
} 

//ETC 
2

이 코드를 삽입하는 가장 좋은 장소는 말 그대로 "아무데도"입니다. Android 앱을 강제 종료하는 것은 좋지 않으며 System.exit 호출은 Android 앱에서해야 할 일이 아닙니다.

관련 문제