文档章节

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
Android基础教程(八)之仿百度谷歌搜索自动提示框-----AutoCompleteTextView的应用

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

神勇小白鼠
2011/01/06
0
1
Android程序完全退出的三种方法 (第三种)

很多网友可能发现自己的Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里Android123给大家三种比较简单的方法实现。 首先要说明在B中直...

天空风
2012/04/24
0
1

没有更多内容

加载失败,请刷新页面

加载更多

讲述下 :LVM逻辑卷管理遇到的问题

LVM学习逻辑卷管理创建逻辑卷遇到的问题 1 实验环境 系统 内核 发行版本 CentOS 2.6.32-754.2.1.el6.x86_64 CentOS release 6.10 (Final) 由于是最小化安装没有xfs命令,yum安装如下包支持此...

linuxprobe16
39分钟前
0
0
day95-20180922-英语流利阅读-待学习

Hey Jude 半个世纪传唱不衰的背后故事 毛西 2018-09-22 1.今日导读 2004 年,The Beatles 被《滚石》杂志选为“历史上最伟大的 50 位流行音乐家的第一位”。这四名来自英国利物浦的男孩不仅对...

飞鱼说编程
47分钟前
1
0
OSChina 周六乱弹 —— 放假前期焦虑症晚期

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @andonny :分享Matteo的单曲《Panama》: 《Panama》- Matteo 手机党少年们想听歌,请使劲儿戳(这里) @新垣吉衣OSC :我发现只要去有小朋友...

小小编辑
今天
163
9
wait()被notify()后,接着执行wait()后面的语句

wait()被notify()后,接着执行wait()后面的语句

noteman
今天
1
0
Ubuntu集群-使用MAAS开始裸机安装

Ubuntu使用MAAS装机的七个步骤。 1、Setup your hardware You need one small server for MAAS and at least one server which can be managed with a BMC. It is recommended to have the M......

openthings
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部