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

你可能感兴趣的:(Android : 四行代码,优雅返回)