一 .覆盖 dispatchKeyEvent
dispatchKeyEvent(KeyEvent e) 返回值为 true则点击“返回” 按键的时候不销毁当前Activity。可以进行其他操作
public boolean dispatchKeyEvent(KeyEvent e) {        if (e.getKeyCode() == KeyEvent.KEYCODE_BACK && e.getAction() == KeyEvent.ACTION_UP)            {                            this.onClick(null);            }        return true;    }public void onClick(View v) {        if (isok != 1) {            // Toast.makeText(this, "正在取消 ...", Toast.LENGTH_SHORT).show();            SynDataProgressAct.getdefault().tmer.cancel();            sync.getdefault().SetCancle();            this.sendMessage(2, sync.getdefault().STRING_C_CANCELING);        } else {            this.finish();        }    }


二 覆盖onKeyDown

在开发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());    }

更多相关文章

  1. Android(安卓)屏幕保护程序制作及源码
  2. Android(安卓)Activity中ActionBar上添加返回功能
  3. Android(安卓)Permission denied 错误 ( 附Android权限大全 )
  4. Android(安卓)APK加壳技术方案【2】
  5. Android2.2的camera应用程序中支持双camera切换(二)
  6. android 摄像头对焦,zoom的通知事件回调,告诉java应用层已经对焦完
  7. Android中退出程序的提示框及完全退出
  8. android中 onResume()方法什么时候执行?
  9. Android(安卓)Exception No such table android_metadata

随机推荐

  1. SQL Server统计信息更新时采样百分比对数
  2. SQL Server查找表名或列名中包含空格的表
  3. sql中的常用的字符串处理函数大全
  4. SQL Server数据库设置自动备份策略的完整
  5. sql server deadlock跟踪的4种实现方法
  6. sql中的left join及on、where条件关键字
  7. SqlServer GO命令循环使用实例代码
  8. SQL中Truncate的用法
  9. SqlServer2016模糊匹配的三种方式及效率
  10. SQL Server索引的原理深入解析