在Android中放置全局方法?

时间:2016-07-25 02:18:19

标签: android

以下是退出我的应用的代码。

由于我有多个活动,我应该在哪里放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);
    }
}

2 个答案:

答案 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

答案 1 :(得分:2)

放置此代码的最佳位置实际上是“无处”。 建议不要强行终止Android应用,调用System.exit绝对不是你应该在Android应用中做的事情。