android退出程序三种方式及其小问题

android关闭程序有三种方式

//第一种方式--关闭包

                          String service = Context.ACTIVITY_SERVICE;

                          ActivityManageractivityManager = (ActivityManager)IndexActivity.this.getSystemService(service);

                          String pagename =IndexActivity.this.getPackageName();

                          activityManager.restartPackage(pagename);

           //第二种方式--直接杀死进程

                           int nPid =android.os.Process.myPid();

                          android.os.Process.killProcess(nPid);

           //第三种方式--结束主界面

                          IndexActivity.this.finish();

这三种方式均能实现关闭功能,

注意:在实现效果的时候会出现,对话框闪一下,就消失,并关闭程序的样子,这是因为最后renturn的值是不一样的。

默认情况下是

return  super(keycode,event);这样就会出现上述错误情形,

应该改为

return false;或return true;这样就能正常出现对话框,而不异常消失了。

完整代码如下:

@Override

    public booleanonKeyDown(int keyCode, KeyEvent event) { 

        if (keyCode == KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0) {

          Log.d(Tag, "Are you sure exit application ?");

          new AlertDialog.Builder(this).setTitle("中国移动").setMessage("您是要退出程序吗?")

               .setIcon(R.drawable.icon).setPositiveButton("退出",new DialogInterface.OnClickListener() {

                    

                     public voidonClick(DialogInterface dialog,int which) {

                          //第一种方式--关闭包

                          String service =Context.ACTIVITY_SERVICE;

                          ActivityManageractivityManager = (ActivityManager)IndexActivity.this.getSystemService(service);

                          String pagename =IndexActivity.this.getPackageName();

                          activityManager.restartPackage(pagename);

                          //第二种方式--直接杀死进程

                          //int nPid =android.os.Process.myPid();

                          //android.os.Process.killProcess(nPid);

                          //第三种方式--结束主界面

                          //IndexActivity.this.finish();

                          Log.i(Tag, "exit");

                     }

               })

               .setNegativeButton("取消", new DialogInterface.OnClickListener() {

                    

                     public voidonClick(DialogInterface dialog,int which) {

                          dialog.cancel();

                          Log.i(Tag, "nothing");

                     }

               }).create().show();

        } 

        return false;

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值