其实你的app并不一定要设置退出功能

其实你的app并不一定要设置退出功能

前文我们讲到了 使用“堆栈法”退出app的方法,但那种方法仅适合于不支持横竖屏切换(或者说,横竖屏切换并不会导致Activity destroy的情况下)的application.


其实换一个思路,我们为何要设置退出功能的,有的时候我们没有必要设置这样的一个功能。可是当用户有想退出的意图怎么办,这里并不是指用户简单点击了 Home 键,而是指用户一直按back键来返回 这样的操作行为。当你的应用中包含一个欢迎页面的时候(通常用来预加载一些数据,或者单纯的就是load 等待几秒钟,然后再自动进入下一个 页面),我们暂且称它为 WelcomeActivity,通常这会是项目的第一个页面,第一个Activity

而不断地按back键的这种操作行为本身就说明用户想退出这个app,或者用户想找到以前的页面,可能是在N个Activity实例之前。


例如:从welcomeActivity ----> loginActivity ---- >  activityA ---- > activityB --- > activityC ----->activityB -----> activityC.... ----..... activityD,

这时候用户再从activityD 一直按 back键,返回上一个activity,再按back,再返回,再按.....


这时候为了达到app的用户操作友好性,我们需要捕捉 back按键操作,为这一行为设置路径。可是当路径到达 welcomeActivity的时候,往往会带来一个问题。从loginActivity到welcomeActivity后,这时候要分情况讨论:

情况1.    如何comeActivity.java中没有捕捉 back按键操作

这时 用户按back后跳到的 页面就是loginActivity了,因为你自己在几秒停顿后startActivity中指明是要跳到这个loginActivity的啊!这样到loginActivity后,再按back..... 死循环啦!

这样的体验效果很不好,这种情况最好是返回到 手机桌面,当成是一种默认退出app的行为。

情况2.    如何comeActivity.java中没有捕捉 back按键操作,执行空操作:

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {   
           return false;
        }
        return super.onKeyDown(keyCode, event);
    }

这时 出现的情况是按键会失效,但是此时它还是会自动进入 loginActivity 页面了!!!还是 死循环


是好的处理,就应该是像情况3的处理方式。!

情况3.    如何comeActivity.java中捕捉 back按键操作,执行返回手机桌面操作:

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Intent itt = new Intent();
            itt.setAction(Intent.ACTION_MAIN);
            itt.addCategory(Intent.CATEGORY_HOME);
            startActivity(itt);


         return false;  // 这是特别注意,如果没有这一句话,那么返回到手机桌面后,app会自动打开进入到loginActivity,因此这一句很重要!!!
        }
        return super.onKeyDown(keyCode, event);
    }

这时的情况是完美的!!!


perfect



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值