Android 实现双击退出的功能
作者:lqh 时间:2021-06-16 09:08:45
实现android双击后退键退出当前APP功能
实现该功能基本思路是,
1, 监听后退键 , 比较两次后退间隔 , 低于两秒则出发退出
2, 退出当前APP
我选择在基类中BaseActivity 中设置监听,代码如下:
public void onBackPressed() {
//Preferences 中获取是否双击退出
boolean isDoubleClick = true;
//BaseApplication.get("ifDoubleClickedBack", true);
if (isDoubleClick) {
long curTime = SystemClock.uptimeMillis();
if ((curTime - mBackPressedTime) < (2 * 1000)) {
finish();
//activity栈管理
AppManager.getAppManager().AppExit();
} else {
mBackPressedTime = curTime;
Toast.makeText(this, "再次点击退出", Toast.LENGTH_SHORT).show();
}
} else {
finish();
}
}
在退出当前APP中,参考开源中国,封装了activity栈
实例代码:
public class AppManager {
private static Stack<Activity> activityStack;
private static AppManager instance;
private AppManager() {
}
/**
* 单一实例
*/
public static AppManager getAppManager() {
if (instance == null) {
instance = new AppManager();
}
if (activityStack == null) {
activityStack = new Stack<Activity>();
}
return instance;
}
/**
* 获取指定的Activity
*
* @author kymjs
*/
public static Activity getActivity(Class<?> cls) {
if (activityStack != null)
for (Activity activity : activityStack) {
if (activity.getClass().equals(cls)) {
return activity;
}
}
return null;
}
/**
* 添加Activity到堆栈
*/
public void addActivity(Activity activity) {
activityStack.add(activity);
}
/**
* 获取当前Activity(堆栈中最后一个压入的)
*/
public Activity currentActivity() {
Activity activity = activityStack.lastElement();
return activity;
}
/**
* 结束当前Activity(堆栈中最后一个压入的)
*/
public void finishActivity() {
Activity activity = activityStack.lastElement();
finishActivity(activity);
}
/**
* 结束指定的Activity
*/
public void finishActivity(Activity activity) {
if (activity != null && activityStack.contains(activity)) {
activityStack.remove(activity);
activity.finish();
}
}
/**
* 结束指定的Activity
*/
public void removeActivity(Activity activity) {
if (activity != null && activityStack.contains(activity)) {
activityStack.remove(activity);
}
}
/**
* 结束指定类名的Activity
*/
public void finishActivity(Class<?> cls) {
for (Activity activity : activityStack) {
if (activity.getClass().equals(cls)) {
finishActivity(activity);
break;
}
}
}
/**
* 结束所有Activity
*/
public void finishAllActivity() {
for (int i = 0, size = activityStack.size(); i < size; i++) {
if (null != activityStack.get(i)) {
finishActivity(activityStack.get(i));
}
}
activityStack.clear();
}
/**
* 退出应用程序
*/
public void AppExit() {
try {
finishAllActivity();
// System.exit(0);
} catch (Exception e) {
}
}
}
思路就是在每次activity 压入activity栈中管理
在退出时遍历栈,挨个finish
希望本文所述对大家的Android程序设计有所帮助。
标签:Android,双击退出


猜你喜欢
java遍历properties文件操作指南
2023-11-23 02:43:45
Android Retrofit实现多图片/文件、图文上传功能
2021-11-01 00:23:47
Java实战员工绩效管理系统的实现流程
2021-11-20 19:04:28

Android中Uri和Path之间的转换的示例代码
2022-01-25 10:22:48
java底层JDK Logging日志模块处理细节深入分析
2023-02-04 12:47:31
Java程序图形用户界面设计之按钮与布局
2023-07-18 07:03:21

Android之禁止ViewPager滑动实现实例
2022-03-17 23:55:40

浅谈Mybatis获取参数值的方式
2022-09-22 07:56:21

Java编程中ArrayList源码分析
2023-05-20 00:05:25
C#使用windows服务开启应用程序的方法
2022-08-14 04:37:14
C# 定时器保活机制引起的内存泄露问题解决
2022-09-19 00:31:33
Java跨域问题的处理详解
2021-07-05 12:55:18
完美实现ExpandableListView二级分栏效果
2021-07-18 20:04:13

Java Servlet简单实例分享(文件上传下载demo)
2022-03-03 06:35:04
从C#程序中调用非受管DLLs的方法
2023-03-23 08:43:41
java中String字符串删除空格的七种方式
2023-03-11 05:54:24

Android ItemDecoration 实现分组索引列表的示例代码
2022-02-10 20:22:12

C#根据http和ftp图片地址获取对应图片
2023-06-06 02:00:23
C#字符串加密解密方法实例
2022-01-11 23:30:14
Android 处理OnItemClickListener时关于焦点颜色的设置问题
2021-09-02 01:47:00
