android 退出功能,Android 实现双击退出的功能

实现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 activityStack;

private static AppManager instance;

private AppManager() {

}

/**

* 单一实例

*/

public static AppManager getAppManager() {

if (instance == null) {

instance = new AppManager();

}

if (activityStack == null) {

activityStack = new Stack();

}

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程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值