2016-07-25 60 views
0

下面是我的代碼退出我的應用程序。在Android中把全局方法放在哪裏?

由於我有超過1項活動,我應該在哪裏放置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

檢查你的方法,我認爲最好的辦法是繼承..在下面的例子是

注意您可以覆蓋onBackPressed()代替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); 
     } 
    } 
} 

那麼,你的「真實」活動可以延伸,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應用程序中應該做的任何事情。