离开Android应用程序与后退按钮

San*_*ung 9 android back android-lifecycle

我希望我的Android应用程序的用户在按某个活动时退出我的应用程序.可以这样做吗?

An-*_*oid 7

一个好方法是等待一秒钟

private boolean             _doubleBackToExitPressedOnce    = false;

@Override
public void onBackPressed() {

    Log.i(TAG, "onBackPressed--");
    if (_doubleBackToExitPressedOnce) {
        super.onBackPressed();
        return;
    }
    this._doubleBackToExitPressedOnce = true;
    Toast.makeText(this, "Press again to quit", Toast.LENGTH_SHORT).show();
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {

            _doubleBackToExitPressedOnce = false;
        }
    }, 2000);
}
Run Code Online (Sandbox Code Playgroud)

  • 它用于众所周知的应用程序和喜欢它的人,它比弹出窗口(是/否)更少绑定,并为用户提供了一个简单的选择 (2认同)
  • 是的,很不幸的。Android 上的许多应用程序都破坏了用户体验,但没有理由鼓励人们继续这样做。关于选择 - 用户在推迟时已经选择离开当前活动。没有必要混淆他们。 (2认同)
  • 我认为我们不能在这里讨论"破损的用户体验".根据具体情况,为用户提供有关他将要做什么的简单信息. (2认同)

Tho*_*kos 6

您可以尝试这样的事情(显示确认退出的对话框):

        @Override
        public void onBackPressed() {
                    new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Exit")
                            .setMessage("Are you sure you want to exit?")
                            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    finish();
                                    System.exit(0);
                                }
                            }).setNegativeButton("No", null).show();
                }
Run Code Online (Sandbox Code Playgroud)

必须注意的是,在下面的评论中提到不建议使用System.exit退出应用程序.一种更"正确"的方式可能是广播一个背压意图,如果您的应用程序的活动收到该意图完成自己.

  • 使用System.exit(0); 除非你知道为什么要...... (4认同)

Kar*_*k s 6

你可以尝试这个

public void onBackPressed() {
    moveTaskToBack(true);
}
Run Code Online (Sandbox Code Playgroud)


Bho*_*att 5

把它放在你Manifest的每个活动中:

<activity android:name=".MyActivity" 
          android:noHistory="true">
</activity>
Run Code Online (Sandbox Code Playgroud)

在您的背面按下Activity:

@Override
protected void onBackPressed() {
    if (this.isFinishing()){ 
        finish();
        super.onBackPressed();
    }
}
Run Code Online (Sandbox Code Playgroud)