Android 完全退出程序,以及再按一次返回键退出程序
再按一次返回键退出最终完整方案:
boolean isExit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyApplication.getInstance().addActivity(this);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// 再按一次退出
exit();
return false;
} else {
return super.onKeyDown(keyCode, event);
}
} private void exit() {
if (!isExit) {
isExit = true;
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
mHandler.sendEmptyMessageDelayed(0, 2000);
} else {
MyApplication.getInstance().exit();
}
} Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
isExit = false;
}
};
完整退出:
之前的退出方案,经常会退出不完全。
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
System.exit(0);
替代方案:
一种比较流行的Android经典完美退出方法,使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activity,并且容易理解、易于操作,非常不错!
MyApplication类(储存每一个Activity,并实现关闭所有Activity的操作)
public class MyApplication extends Application {
private List<Activity> activityList = new LinkedList<Activity>();
private static MyApplication instance;
private MyApplication()
{
}
//单例模式中获取唯一的MyApplication实例
public static MyApplication getInstance()
{
if(null == instance)
{
instance = new MyApplication();
}
return instance;
}
//添加Activity到容器中
public void addActivity(Activity activity)
{
activityList.add(activity);
}
//遍历所有Activity并finish
public void exit()
{
for(Activity activity:activityList)
{
activity.finish();
}
System.exit(0);
}
}
在每一个Activity中的onCreate方法里添加该Activity到MyApplication对象实例容器中
MyApplication.getInstance().addActivity(this);
在需要结束所有Activity的时候调用exit方法
MyApplication.getInstance().exit();
Android 完全退出程序,以及再按一次返回键退出程序的更多相关文章
- Android中的“再按一次返回键退出程序”实现 (转) 按返回键退出程序时进行提醒
原文地址: https://blog.csdn.net/xichenguan/article/details/47030303 最近在研究 Android 编程方面的东西, 有了以下发现, 该 ...
- Android中的“再按一次返回键退出程序”实现
用户退出应用前给出一个提示是很有必要的,因为可能是用户并不真的想退出,而只是一不小心按下了返回键,大部分应用的做法是在应用退出去前给出一个Dialog,我觉得这样不太友好,用户还得移动手指去按dial ...
- Android中的“再按一次返回键退出程序”实现[转]
用户退出应用前给出一个提示是很有必要的,因为可能是用户并不真的想退出,而只是一不小心按下了返回键,大部分应用的做法是在应用退出去前给出一个Dialog,我觉得这样不太友好,用户还得移动手指去按dial ...
- ANDROID 实现 再按一次返回键退出程序 代码片段
//1.声明变量 // 退出时间 private long currentBackPressedTime = 0; // 退出间隔 private static final int BACK_PRES ...
- Android中的“再按一次返回键退出程序”代码实现
1 用户在退出应用前给出一个提示是很有必要的,因为可能是用户并不真的想退出,而只是一不小心按下了返回键,大部分应用也是这么做的,但也有些应用的做法是在应用退出去前给出一个Dialog,我觉得这样不太友 ...
- Android中“再按一次返回键退出程序”实现
private long exitTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyC ...
- android 点击返回键退出程序的方法
android 点击返回键退出程序的方法 第一种: 再按一次返回键退出程序 private long exitTime = 0; @Override public boolean onKeyDown( ...
- android双击返回键退出程序
今天给大家简单说一下,android双击返回键退出程序. @Override public boolean onKeyDown(int keyCode, KeyEvent event) { ...
- Android 监听返回键退出程序的两种实现
1.Android 双击返回键退出程序 思路:用户按下返回键时设定一个定时器来监控是否2秒内实现了退出,如果用户没有接着按返回键,则清除第一次按返回键的效果,使程序还原到第一次按下返回键之前的状态.定 ...
随机推荐
- ubuntu恢复rm -rf误删文件
使用extundelete工具 sudo apt-get install extundelete 恢复操作命令 首先需要umount或者read only 分区 umount /dev/partit ...
- OC4_可变数组
// // main.m // OC4_可变数组 // // Created by zhangxueming on 15/6/11. // Copyright (c) 2015年 zhangxuemi ...
- 09_TomCat_基础知识
[TomCat目录结构] bin----------存放TomCat的操作命令.bat:window版本,sh:Linux版本. startup.bat: 后台在调用catalina.bat st ...
- HDU 3943 K-th Nya Number(数位DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3943 题目大意:求出区间 (P,Q] 中找到第K个满足条件的数,条件是该数包含X个4和Y个7 Samp ...
- c#编写简单计算器
刚接触c#,依照惯例,写个简单的计算器,只写了加法,乘法,其他的类似,编辑器用的vs2008 首先打开vs ,新建c#的Windows窗体应用程序,接下来的项目的名称是WindowsFormsAppl ...
- PHPstrom2016.1激活与汉化【2016.06.21依旧可用】
: 目前的网络上有很多的关于PHPstrom激活的方法,但是很多都失效了,没有具体的使用日期,这个是我从其他网友那里转载过来的,具体地址忘记了: 方法如下: 需要在联网条件下,打开PHPstrom,在 ...
- C指针笔记
指针的学习 两个数比较大小,通过传递内容进行比较 #include <stdio.h> void swap(int *p1, int *p2){ int temp; //注意指变量*的两个 ...
- python3 中自带urllib库可下载图片到本地
刚从python3下载图片的语句python2的不太一样,具体python3语句如下: form urllib import request jpg_link = '......' #图片链接 re ...
- RedHat和CentOS使用本地yum源配置
2013-04-01 11:38:30 标签:本地yum源 版权声明:原创作品,谢绝转载!否则将追究法律责任. 使用yum命令安装所需的软件,如果设备网络状况很好,当然也没必要去配置本地yum源,直接 ...
- ibdata1是?
MySQL使用InnoDB引擎的时候,ibdata1这个文件会随着时间的增长,会变得越来越大,占据大量的磁盘空间. 那么,ibdata1里保存了哪些东西,为什么会变得越来越大呢,让我们开看看ibdat ...