在onBackPressed()的MainActivity中关闭应用程序

时间:2016-02-03 15:52:56

标签: android back-button close-application

当我按下MainActivity上的后退按钮时,我希望我的应用关闭。目前,当我在MainActivity上按它时,它将返回上一个活动。

3 个答案:

答案 0 :(得分:1)

为什么您希望自己的应用不再回到之前的活动? 如果您的MainActivity是由您不希望返回的活动启动的,那么最好为启动MainActivity的intent添加标志,以便之前的活动不会保留在Task-stack中。

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

如果您不想这样做,则必须覆盖OnBackPress()以删除/完成堆栈中MainActivity下的Tasks。 例如,这可以通过LocalBroadcaster完成,即使它非常难看。

在您要关闭的活动中:

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        finish();
    }
};

@Override
protected void onResume() {
    super.onResume();
    IntentFilter filter = new IntentFilter("Your filter");        
    LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, filter);
 }

@Override
protected void onDestroy() {
    super.onDestroy();
    LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver);
}

在您的MainActivity中:

@Override
public void onBackPressed() {
    Intent intentBroadcast = new Intent("Your filter");
    LocalBroadcastManager.getInstance(MainActivity.this).sendBroadcast(intentBroadcast);
    finish();
}

答案 1 :(得分:0)

select case
            when
                (case 
                    when cast(getdate() as date) = cast(dateadd(year, (datediff(year, '1996-09-09', getdate())), '1996-09-09') as date)
                        then dateDiff(yyyy,'1996-09-09',dateadd(year, 0, getdate()))
                    else dateDiff(yyyy,'1996-09-09',dateadd(year, -1, getdate()))
                end) = 19
                then 'Same age'
            else 'Not same age'
        end as AgeCompare
go

值得注意的是,更改默认行为并不是一个好主意。

答案 2 :(得分:0)

您可以使用System.exit(0)。

    @Override
    public void onBackPressed() {
        System.exit(0);
    }