前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android : 四行代码,优雅返回

Android : 四行代码,优雅返回

作者头像
冰之角
发布2018-09-04 15:56:54
5610
发布2018-09-04 15:56:54
举报
文章被收录于专栏:Winter漫聊技术

为了防止用户误触返回键,还在使用 “再按一次退出” 吗? 追求简约与极速的时代,这种交互显然已经Out了嘛~

下面我们来看一下如何用四行代码实现优雅退出。

代码实现

第一步,声明一个Runnable

代码语言:javascript
复制
private Runnable mFinishRunnable = this::finish;

第二步,重写Activity的onBackPressed()方法

代码语言:javascript
复制
@Override
public void onBackPressed() {    
    getWindow().getDecorView().postDelayed(mFinishRunnable,Constants.VALUE_FINISH_DELAYED_TIME);   
    moveTaskToBack(true);
}

第三步,重写Activity的onStart()方法

代码语言:javascript
复制
@Override
protected void onStart() {    
    super.onStart(); 
    getWindow().getDecorView().removeCallbacks(mFinishRunnable);
}

大功告成,懂了的可以点个?撤了。

详细说明

代码语言:javascript
复制
// 用于 finish 当前 Activity 的 Runnable ;    
private Runnable mFinishRunnable = new Runnable() {
    @Override
    public void run() {
        finish();        
    }
};    

/**
  * 按返回键时延迟执行 mFinishRunnable ; 
  * 并将当前Activity隐藏在后台, 看起来就像退出了一样。
  */    
@Override    
public void onBackPressed() {
//    super.onBackPressed(); //注释掉 super 代码.
    // 10秒之后才会执行 mFinishRunnable .
    getWindow().getDecorView().postDelayed(mFinishRunnable, 1000 * 10);
    moveTaskToBack(true);
}
    
/**   
  * 用户可能误触了返回键, 重回Activity后应该取消延迟执行的 mFinishRunnable .   
  */    
@Override    
protected void onStart() {    
    super.onStart();  
    getWindow().getDecorView().removeCallbacks(mFinishRunnable);    
}

仔细阅读注释,就是酱紫~ 用户按了返回键后,直接“退出”。在指定时间内可以随时回到应用,就好像他只是按了Home键一样。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.06.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码实现
  • 详细说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档