自定义返回导航--后退拦截机制

本文介绍了Android自定义返回导航的概念,通过Activity的OnBackPressedDispatcher实现返回拦截。提供了一个简单的应用场景,用于在退出最后一个Activity时提示用户。同时,文章深入源码,解释了如何从ComponentActivity层理解后退逻辑的变化,帮助读者完整理解这一功能。
摘要由CSDN通过智能技术生成

今天逛Android官方文档的时候发现了一个比较简单也有点意思的东西。自定义返回导航。这篇文章就这个简单说一下:

自定义返回导航是啥;
怎么用;
简单场景;
看一下源码;

什么是自定义返回导航

简单点来说就是可以对返回进行拦截了。有人就会说了:之前也可以拦截呀!!
对,以前对后退做拦截的的方式基本上是对onKeyDown方法做拦截(也可以对onBackPressed做拦截),但onKeyDown
职能比较多,包含了很多物理按键,现在android官方将返回拿出来单独处理肯定会好一点的(原理就是对onBackPressed做拦截)。

是这样的

通过activity的getOnBackPressedDispatcher()方法你可以得到一个OnBackPressedDispatcher,看名字就知道,这是用来调度返回用的,而我们可以通过它的addCallback方法将我们想要的返回逻辑加给他,就像这样:

val callback = onBackPressedDispatcher.addCallback(this,true){
   
    //back code
}

这是kotlin对addCallback优化的一个扩展函数,如果是java的话,是这样的:

OnBackPressedCallback callback = new OnBackPressedCallback(true) {//true 开启自定义返回逻辑
    @Override
    public void handleOnBackPressed() {
        //back code
    }
};
getOnBackPressedDispatcher().addCallback(callback);

然后我们可以通过callback的setEnabled方法对这个自定义返回逻辑开启和关闭。callback.setEnabled(false);关闭返回拦截,最主要的功能就这么多。

一个实现场景

我使用自定义返回导航改了一下之前写的后退提示,通常在退出最后一个activity的时候提醒一下用户:再点击就退出这个app啦这样的需求。改后对比了一下简洁了好多(也因为是kotlin):

fun AppCompatActivity.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值