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

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

前文我们讲到了使用“堆栈法”退出app的方法,但那种方法仅适合于不支持横竖屏切换(或者说,横竖屏切换并不会导致Activitydestroy的情况下)的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



你可能感兴趣的:(APP)