如何将应用程序置于后台(onPause()状态)

时间:2013-12-30 19:11:01

标签: android android-intent android-activity

当按下后退键时,我创建了一个警告对话框,询问用户是否需要将应用程序放入后台或退出

@Override
public void onBackPressed() {
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
    dialogBuilder.setPositiveButton("Keep ON", new OnClickListener(){
        @Override
        public void onClick(DialogInterface dialog, int which) {
            onPause();
        }

    });
    dialogBuilder.setNegativeButton("Exit", new OnClickListener(){
        @Override
        public void onClick(DialogInterface dialog, int which) {
            onDestroy();
        }

    });
    dialogBuilder.setMessage("Do you want to keep the activity running on background");
    AlertDialog Dialog = dialogBuilder.create();
    Dialog.show();
}

但是调用onPause()和onDestroy()不起作用

有任何解决方案可以满足我的目标....

1 个答案:

答案 0 :(得分:4)

你绝对不应该手动调用onPauseonDestroy :)这是Android的功能,而不是你。

另外,我会说这种对话是非常糟糕的用户体验。当按下“后退”按钮时,Android用户可以很好地了解他们在做什么。

无论如何,如果这个对话对你来说非常重要,那就是:

  • 要“销毁”应用程序 - 在onClick侦听器中调用finish()

    dialogBuilder.setNegativeButton("Exit", new OnClickListener(){
        @Override
        public void onClick(DialogInterface dialog, int which) {
            finish();
        }
    
    });
    
  • 对于“背景”,事情有点棘手。您需要发送启动家庭活动的意图:

    dialogBuilder.setPositiveButton("Keep ON", new OnClickListener(){
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            startActivity(intent);
        }
    });
    

此外,如果您按下“后退”按钮,我就不会致电super.onBackPressed(),因为它会完成您的活动 - 这是默认行为