文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android 实现双击退出的功能

2022-06-06 07:59

关注

实现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;
  }
  
  public static Activity getActivity(Class<?> cls) {
    if (activityStack != null)
      for (Activity activity : activityStack) {
        if (activity.getClass().equals(cls)) {
          return activity;
        }
      }
    return null;
  }
  
  public void addActivity(Activity activity) {
    activityStack.add(activity);
  }
  
  public Activity currentActivity() {
    Activity activity = activityStack.lastElement();
    return activity;
  }
  
  public void finishActivity() {
    Activity activity = activityStack.lastElement();
    finishActivity(activity);
  }
  
  public void finishActivity(Activity activity) {
    if (activity != null && activityStack.contains(activity)) {
      activityStack.remove(activity);
      activity.finish();
    }
  }
  
  public void removeActivity(Activity activity) {
    if (activity != null && activityStack.contains(activity)) {
      activityStack.remove(activity);
    }
  }
  
  public void finishActivity(Class<?> cls) {
    for (Activity activity : activityStack) {
      if (activity.getClass().equals(cls)) {
        finishActivity(activity);
        break;
      }
    }
  }
  
  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双击返回键退出程序的实现方法Android App中实现可以双击放大和缩小图片功能的实例Android双击退出的实现方法Android 自定义View实现单击和双击事件的方法Android中双击返回键退出应用实例代码Android 双击返回键退出程序的方法总结Android实现双击TitleBar回顶部的功能示例代码


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯