开发者

Android: How can I detect if the Back button will exit the app (i.e. this is the last activity left on the stack)?

开发者 https://www.devze.com 2023-04-07 14:51 出处:网络
I\'d like to warn the user if the back press is going to f开发者_运维知识库inish the last activity on the stack, thereby exiting the app. I\'d like to pop up a little toast and detect a 2nd back press

I'd like to warn the user if the back press is going to f开发者_运维知识库inish the last activity on the stack, thereby exiting the app. I'd like to pop up a little toast and detect a 2nd back press within the next few seconds and only then call finish().

I already coded the back press detection using onBackPressed(), but I can't find an obvious way to see how many activities are left on the back stack.

Thanks.


The reddit is fun app does this by overriding the onKeyDown method:

public boolean onKeyDown(int keyCode, KeyEvent event) {
    //Handle the back button
    if(keyCode == KeyEvent.KEYCODE_BACK && isTaskRoot()) {
        //Ask the user if they want to quit
        new AlertDialog.Builder(this)
        .setIcon(android.R.drawable.ic_dialog_alert)
        .setTitle(R.string.quit)
        .setMessage(R.string.really_quit)
        .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                //Stop the activity
                finish();    
            }
        })
        .setNegativeButton(R.string.no, null)
        .show();

        return true;
    }
    else {
        return super.onKeyDown(keyCode, event);
    }
}


The droid-fu library does this by checking the stack of running tasks and seeing if the next task is the android home screen. See handleApplicationClosing at https://github.com/kaeppler/droid-fu/blob/master/src/main/java/com/github/droidfu/activities/BetterActivityHelper.java.

However, I would only use this approach as a last resort since it's quite hacky, won't work in all situations, and requires extra permissions to get the list of running tasks.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号