Android : 四行代码,优雅返回

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

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

代码实现

第一步,声明一个Runnable

private Runnable mFinishRunnable = this::finish;

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

@Override
public void onBackPressed() {    
    getWindow().getDecorView().postDelayed(mFinishRunnable,Constants.VALUE_FINISH_DELAYED_TIME);   
    moveTaskToBack(true);
}

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

@Override
protected void onStart() {    
    super.onStart(); 
    getWindow().getDecorView().removeCallbacks(mFinishRunnable);
}

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

详细说明

// 用于 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键一样。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏everhad

[异常特工]android常见bug跟踪

前言 对app的线上bug的收集(友盟、云捕等)有时会得到这样的异常堆栈信息:没有一行代码是有关自身程序代码的。这使得对bug的解决无从下手,根据经验,内存不足...

2045
来自专栏Android中高级开发

Android开发之漫漫长途 XV——RecyclerView

该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索...

1752
来自专栏Android中高级开发

Android开发之漫漫长途 Fragment番外篇——TabLayout+ViewPager+Fragment

该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索...

2201
来自专栏何俊林

Android支付实践(二)之微信支付详解与Demo

前言:集成支持宝和微信支付,是公司获取收益的最主要的部分,这两大巨头几乎在支付业务上不可或缺,今天看下Simon_Crystin独家授权本公众号发步的Andro...

2326
来自专栏俞其荣的博客

Android Architecture Component之Lifecycle解析HeaderLifecyclePart 1Part 2Part 3Footer

终于到了最后的关头,Android Architecture Component 系列的最后一节内容。今天给大家带来的就是 Lifecycle 的解析。

1644
来自专栏用户2442861的专栏

ListView 原理的介绍 qt也可以吧想通的Android

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/44996879

421
来自专栏Android群英传

不需要再手写 onSaveInstanceState 了,因为你的时间非常值钱

901
来自专栏求索之路

MVVM架构之自动增删改的极简RecycleView的实现

介绍图 先上个源代码的链接:https://github.com/whenSunSet/MVVMRecycleView RecycleView是Google替...

3916
来自专栏我就是马云飞

我奶奶都能懂的UI绘制流程(上)

前言 从今天开始,慢慢整理Android高级UI的知识,涉及到各种酷炫狂拽吊炸天的特效。 之前写过一篇Window一本满足算是这个专题的预备知识,本文就基于这篇...

2176
来自专栏三流程序员的挣扎

Android 单元测试 Robolectric

通过实现一套 JVM 能够运行的 Android 代码,从而实现脱离 Android 环境进行测试。

2303

扫码关注云+社区

领取腾讯云代金券