• activity 的返回按钮


    http://www.2cto.com/kf/201210/160251.html

    连续点击两次程序就退出程序,这是一个很有趣的程序功能,下来介绍一下我的实现方式(欢迎大家拍砖指点):
       1、在Activity中设置一个long型的全局变量 firstTime=0,用来记录第一次按下的时间(单位为毫秒);
       2、响应Activity的 onKeyUp事件:
         
    @Override 
        public boolean onKeyUp(int keyCode, KeyEvent event) { 
            if (keyCode == KeyEvent.KEYCODE_BACK) { 
                long secondTime = System.currentTimeMillis(); 
                if (secondTime - firstTime > 800) {//如果两次按键时间间隔大于800毫秒,则不退出 
                    Toast.makeText(MainActivity.this, "再按一次退出程序...", 
                            Toast.LENGTH_SHORT).show(); 
                    firstTime = secondTime;//更新firstTime 
                    return true; 
                } else { 
                    System.exit(0);//否则退出程序 
                } 
            } 
            return super.onKeyUp(keyCode, event); 
        } 
     OK了!

    http://www.2cto.com/kf/201103/84900.html

    在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK )就能关闭程序,其实大多情况下该应用还在任务里运行着,其实这不是我们想要的结果。

    我们可以这样做,当用户点击自定义的退出按钮或返回键时(需要捕获动作),我们在onDestroy() 里强制退出应用,或直接杀死进程,具体操作代码如下:

    //捕获按下键盘上返回按钮
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                new AlertDialog.Builder(this)
                        // .setIcon(R.drawable.services)
                        .setTitle(R.string.prompt)
                        .setMessage(R.string.quit_msg)
                        .setNegativeButton(R.string.cancel,
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog,
                                            int which) {
                                    }
                                })
                        .setPositiveButton(R.string.confirm,
                                new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog,
                                            int whichButton) {
                                        finish();
                                    }
                                }).show();
                return true;
            } else {
                return super.onKeyDown(keyCode, event);
            }
        }
        //彻底退出程序
        @Override
        protected void onDestroy() {
            super.onDestroy();
            System.exit(0);
            // 或者下面这种方式
            // android.os.Process.killProcess(android.os.Process.myPid());
        }

    http://blog.csdn.net/carterjin/article/details/7677069

    正好在网上看到了一个,研究了一下,保存下来吧。

    第一步,定义一个变量,用于标识是否退出

    [java] view plaincopy
     
    1. boolean isExit;  

    第二步,重写Activity中onKeyDown方法

    [java] view plaincopy
     
    1. @Override  
    2.     public boolean onKeyDown(int keyCode, KeyEvent event) {  
    3.         if (keyCode == KeyEvent.KEYCODE_BACK) {  
    4.             exit();  
    5.             return false;  
    6.         } else {  
    7.             return super.onKeyDown(keyCode, event);  
    8.         }  
    9.     }  


    第三步,写一个退出方法,名称就是onKeyDown中的exit()

    [java] view plaincopy
     
    1. public void exit(){  
    2.         if (!isExit) {  
    3.             isExit = true;  
    4.             Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();  
    5.             mHandler.sendEmptyMessageDelayed(02000);  
    6.         } else {  
    7.             Intent intent = new Intent(Intent.ACTION_MAIN);  
    8.             intent.addCategory(Intent.CATEGORY_HOME);  
    9.             startActivity(intent);  
    10.             System.exit(0);  
    11.         }  
    12.     }  


    第四步,根据exit()方法中的的消息,写一个Handler

    [java] view plaincopy
     
    1. Handler mHandler = new Handler() {  
    2.   
    3.         @Override  
    4.         public void handleMessage(Message msg) {  
    5.             // TODO Auto-generated method stub  
    6.             super.handleMessage(msg);  
    7.             isExit = false;  
    8.         }  
    9.   
    10.     };  



    实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获,判断是BACK键,则执行exit方法。

    在exit方法中,会首先判断isExit的值,如果为false的话,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在Handler中将此值还原成false。

    如果在发送消息间隔的2秒内,再次按了BACK键,则再次执行exit方法,此时isExit的值已为true,则会执行退出的方法。

  • 相关阅读:
    .Matrix-第三篇冲刺随笔
    .Matrix-第二篇冲刺随笔
    Alpha冲刺-第九次冲刺笔记
    Alpha冲刺-第八次冲刺笔记
    Alpha冲刺-第七次冲刺笔记
    Alpha冲刺-第六次冲刺笔记
    Alpha冲刺-第五次冲刺笔记
    Alpha冲刺-第四次冲刺笔记
    Alpha冲刺-第三次冲刺笔记
    Alpha冲刺-第二次冲刺笔记
  • 原文地址:https://www.cnblogs.com/daishuguang/p/3710617.html
Copyright © 2020-2023  润新知