文档章节

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应用开发完全退出程序的通用方法!!!

们在开发一个android应用时,有可能有N个Activity,而在每个Activity里的菜单里有个"退出程序"菜单,这里就要完全退出程 序了,所以今天给大家分享的是Android应用开发完全退出程序的通用方法...

鉴客
2011/09/18
2.5K
0
Android程序的隐藏与退出

Android的程序无需刻意的去退出, 当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来销毁当前Activity,当此 Activity又被其它Activity启动起来的时候,会...

鉴客
2011/11/22
412
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,启动了一个子线程,这个子线程是一个死循环,不成的打印“Hello”。 现在要实现点击一个Button,让这个子线程终止,用什么方法啊? stop()不起作用,destroy()有异常,Handler貌似...

长平狐
2013/12/25
916
0
[Android] Android进程与线程基本知识

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

枫兮兮
2014/02/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 白掌柜说了卖货不卖身

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @爱漫爱 :这是一场修行分享羽肿的单曲《Moony》 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :开不开心? 开心呀, 我又不爱睡懒觉…...

小小编辑
今天
8
0
大数据教程(11.7)hadoop2.9.1平台上仓库工具hive1.2.2搭建

上一篇文章介绍了hive2.3.4的搭建,然而这个版本已经不能稳定的支持mapreduce程序。本篇博主将分享hive1.2.2工具搭建全过程。先说明:本节就直接在上一节的hadoop环境中搭建了! 一、下载apa...

em_aaron
今天
3
0
开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
今天
4
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
今天
3
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部