文档章节

Android里实现退出主程序的提示代码

s
 sjh1995
发布于 2016/03/02 12:42
字数 497
阅读 5
收藏 0

 

当用户选择"确定",就退出当前的对话框。其中,有个很重要的函数,Activity.finish(),通过调用这个函数,退出当前运行的整个Android程序

当用户选择"取消"的时候,只要单纯的retuan,即可返回主程序.
我们可以定义一个showTips()的专用方法在main Activity里面,那么,每次我们写的时候,就调用这个函数的就可以了。

代码如下:


private void showTips(){
AlertDialog alertDialog = new AlertDialog.Builder(Activity.this)
.setTitle("退出程序")
.setMessage("是否退出程序")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which)
Activity.this.finish();
}
})
.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which)
return;
}}).create(); //创建对话框
alertDialog.show(); // 显示对话框
}

那么,在哪里调用这个提示的方法呢?
最初我的想法是打算在Android 的 主Activity 里面的onDestory() 函数里面定义的,后来试了一下,发觉其实这个函数是在当初Activity退出的时候,才会被调用的,如果在这里才调用,就太迟了。
所以,应该找到的是返回按键的响应时间,也就是函数Activity. onKeyDown(int keyCode, KeyEvent event) 函数里面响应事件的发生.

 代码如下:


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK && event.getRepeatCount()==0){
this.showTips();
return false;
}
return false;
}

至此,通过复写onKeyDown函数,当用户单击返回的按钮的时候,就会弹出提示的对话框,可以有效地防止用户由于失误引起的不必要的退出。

实现android 再按一次退出程序代码

 代码如下:


private long exitTime = 0;

/**
* 捕捉返回事件按钮
*
* 因为此 Activity 继承 TabActivity 用 onKeyDown 无响应,所以改用 dispatchKeyEvent
* 一般的 Activity 用 onKeyDown 就可以了
*/

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
 if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
   if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
     this.exitApp();
   }
   return true;
 }
 return super.dispatchKeyEvent(event);
}

/**
* 退出程序
*/
private void exitApp() {
 // 判断2次点击事件时间
 if ((System.currentTimeMillis() - exitTime) > 2000) {
   Toast.makeText(MainActivity.this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
   exitTime = System.currentTimeMillis();
 } else {
   finish();
 }
}

本文转载自:http://www.jb51.net/article/37989.htm

共有 人打赏支持
s
粉丝 0
博文 16
码字总数 5211
作品 0
衢州
程序员
私信 提问
android程序完全退出步骤

方法A: 1.5版本到2.1版本的退出方法是 ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); activityManager.restartPackage("包名"......

带梦想一7飞
2012/08/17
0
0
[Android] Android进程与线程基本知识

本文介绍Android平台中进程与线程的基本知识。   很早的时候就想介绍一下Android中的进程和线程,但由于其他的事情一直给耽搁了,直到现在才能和大家一起分享下。   1.Android进程基本知...

枫兮兮
2014/02/24
0
0
android多activity退出整个程序的一个实现

多activity中退出整个程序,例如从A->B->C->D,这时我需要从D直接退出程序。 网上资料:{ finish()和system(0)都只能退出单个activity。杀进程等的等方式都不行~~~ 解决问题: 我们知道Andro...

顶层设计
2012/09/28
0
0
Sencha Touch 程序设计之 Android 平台 Back 按键处理

用 Sencha Touch 结合PhoneGap设计本地APP,免不了要分别处理android平台和iphone平台,两个平台的最大区别之一就是back键的处理。iphone平台没有back按键,只有home按键,按下该键的话程序会...

罗盛力
2012/11/01
0
0
Android基础教程(八)之仿百度谷歌搜索自动提示框-----AutoCompleteTextView的应用

现在我们上网几乎都会用百度或者谷歌搜索信息,当我们在输入框里输入一两个字后,就会自动提示我们想要的信息,这种效果在Android 里是如何实现的呢? 事实上,Android 的AutoCompleteTextView Wi...

神勇小白鼠
2011/01/06
0
1

没有更多内容

加载失败,请刷新页面

加载更多

Java 源代码和 C 源代码的运行区别

与其他程序的执行方式和编译方式不同。 Java 源代码需要进行编译成字节码后在 Java 虚拟机上运行,这样 Java 程序能够保持独立性和跨平台功特性。 请参考下图。 https://www.cwiki.us/pages...

honeymose
50分钟前
3
0
Apache限定目录解析PHP,限制user_agent,PHP相关的配置

Apache限定目录解析PHP 配置前访问upload/index.php [root@test-a ~]# curl -x192.168.77.139:80 'www.test.com/upload/index.php'This is upload diretory 配置,/usr/local/apache2.4/......

野雪球
今天
5
0
java.util.Concurrent.Exchanger源码

类图 源码: package java.util.concurrent;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.atomic.AtomicReference;import java.util.concurrent......

狼王黄师傅
今天
6
0
Kubernetes里的secret最基本的用法

Secret解决了密码、token、密钥等敏感数据的配置问题,使用Secret可以避免把这些敏感数据以明文的形式暴露到镜像或者Pod Spec中。 Secret可以以Volume或者环境变量的方式使用。 使用如下命令...

JerryWang_SAP
昨天
5
0
2018-11-20学习笔记

1. python数据类型: 给变量赋值什么样的值,变量就是什么样的类型 给变量赋值整数,变量就是整数类型 给变量赋值字符串,变量就是字符串类型 123 和“123”一样吗? 在python中 单引号 与双...

laoba
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部