android ARouter配置降级服务
当传一个错误的路由路由失败时配置跳转到一个错误页面。修改common模块build.gradle.kts, defaultConfig里面加上dependencies 添加annotationProcessor(com.alibaba:arouter-compiler:1.5.2)完整的common/build.gradle.kts内容plugins { alias(libs.plugins.android.library) } android { namespace com.example.common compileSdk { version release(36) } defaultConfig { minSdk 24 testInstrumentationRunner androidx.test.runner.AndroidJUnitRunner consumerProguardFiles(consumer-rules.pro) javaCompileOptions { annotationProcessorOptions { arguments.put(AROUTER_MODULE_NAME, project.name) } } } buildTypes { release { isMinifyEnabled false proguardFiles( getDefaultProguardFile(proguard-android-optimize.txt), proguard-rules.pro ) } } compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } } dependencies { // 仅引入 API不引入编译器 api(com.alibaba:arouter-api:1.5.2) // 编译期注解处理器 annotationProcessor(com.alibaba:arouter-compiler:1.5.2) // TODO 其他公共依赖库 implementation(libs.androidx.appcompat) implementation(libs.google.material) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) }在公共模块自定义DegradeService实现类package com.example.common; import android.content.Context; import android.util.Log; import android.widget.Toast; import com.alibaba.android.arouter.facade.Postcard; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.facade.service.DegradeService; import com.alibaba.android.arouter.launcher.ARouter; /** * 路由失败的统一降级处理类 * 通过 Route 注解注册 */ Route(path /service/degrade/globalErrorPage) public class MyDegradeService implements DegradeService { private Context mContext; Override public void onLost(Context context, Postcard postcard) { String failedPath postcard.getPath(); // 获取失败的路由地址 Log.d(DegradeService, 路由失败失败的路由地址为 failedPath); // 防止递归如果本次丢失的路径已经是错误页面则不再跳转 if (/error/page.equals(postcard.getPath())) { return; } Toast.makeText(mContext, 页面不存在或暂未开放 failedPath \n 404 \n安能摧眉折腰事权贵,使我不得开心颜。, Toast.LENGTH_SHORT).show(); ARouter.getInstance() .build(/error/page) // 重定向到错误页面。 .withString(failedPath, failedPath) .navigation(); } Override public void init(Context context) { mContext context; } }同样在公共模块添加重定向的那个错误页面package com.example.common; import android.os.Bundle; import android.widget.TextView; import com.alibaba.android.arouter.facade.annotation.Autowired; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; import androidx.appcompat.app.AppCompatActivity; Route(path /error/page) public class ErrorPageActivity extends AppCompatActivity { Autowired(name failedPath) String failedPath; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ARouter.getInstance().inject(this); TextView textView new TextView(this); textView.setText(ErrorPageActivity\n String.format(%s页面不存在\n404\n日光之下无新鲜事。, failedPath)); textView.setTextSize(16); setContentView(textView); } }在主模块的AndroidManifest文件中不能忘了注册这个activityMainActivity中随意路由一个不存在的地址ok. 测试结果ok.

相关新闻

手机号码测吉凶:民俗趣味解读与在线查询平台体验

手机号码测吉凶:民俗趣味解读与在线查询平台体验

手机号码作为现代生活中高频使用的数字标识,承载着沟通联络的基础功能,也在民间文化中被赋予了数字寓意与吉凶解读的趣味空间。手机号码测吉凶,正是基于传统数理、五行谐音等民俗文化衍生出的休闲玩法,不具备科学判定依据&#xf…

2026/5/17 8:04:08 阅读更多 →
Git 从远程拉取代码

Git 从远程拉取代码

Git 从远程拉取代码:完整指南 1. Git 远程仓库基础 Git 作为分布式版本控制系统,远程仓库是其协作功能的核心。远程仓库是存储在服务器上的代码仓库,团队成员可以通过它与本地仓库进行交互。理解远程仓库的基本概念是掌握 Git 协作的第一步。…

2026/7/3 10:08:20 阅读更多 →
企业级AI落地实战:从RAG到Copilot,2025年大模型应用经验总结(建议收藏)

企业级AI落地实战:从RAG到Copilot,2025年大模型应用经验总结(建议收藏)

经验总结 RAG不是简单的Chatbot,是知识治理与工程 RAG 是很多企业落地 AI 应用的主要方式,不管是基于 Langchain、Dify 还是 Coze,RAG看起来也很简单,把企业文档上传形成知识库,再把知识库片段结合用户问题一起输入 LL…

2026/5/17 9:15:46 阅读更多 →

最新新闻

PIC18F8722外部EEPROM存储扩展实战指南

PIC18F8722外部EEPROM存储扩展实战指南

1. 为什么需要外部EEPROM存储扩展在嵌入式系统开发中,PIC18F8722这类微控制器自带有限的内部存储空间。以PIC18F8722为例,其内部EEPROM容量仅为1024字节(1KB),这对于需要存储大量配置参数、历史数据或日志记录的应用场…

2026/7/3 17:21:52 阅读更多 →
高效低查重!AI教材生成工具助力教师轻松完成教材编写

高效低查重!AI教材生成工具助力教师轻松完成教材编写

谁没有在编写教材时感到困惑呢? 面对一页空白的文档,沉思了半个多小时,知识点的整理似乎毫无头绪——是先讲解基本概念,还是先分享案例呢?章节的划分该按照逻辑、还是依据课时呢?不断修改的大纲总是无法符…

2026/7/3 17:21:52 阅读更多 →
从8万美元跌至千元级,车载激光雷达成本暴跌96%背后:芯片化、规模化与全场景落地实战

从8万美元跌至千元级,车载激光雷达成本暴跌96%背后:芯片化、规模化与全场景落地实战

目录 摘要 一、行业综述:激光雷达从天价科研设备到民用标配的蜕变 1.1 十年价格迭代核心数据 1.2 市场格局与产业现状 二、核心降本逻辑一:芯片化架构重构,从分立器件到单芯片集成 2.1 传统分立架构的致命成本缺陷 2.2 芯片化自研的核心降本原理 2.3 头部厂商差异化…

2026/7/3 17:19:52 阅读更多 →
结构化数据 + GEO:让 AI 真正“读懂”你的网站

结构化数据 + GEO:让 AI 真正“读懂”你的网站

如果你的网站内容连 AI 都“看”不明白,再好的产品和服务也会在生成式搜索时代石沉大海。而让 AI 精准理解你的第一步,就藏在看似不起眼的 Schema 标记里。 一、当搜索引擎变成“答案引擎” 过去十年,SEO 的核心是取悦搜索引擎的爬虫——让它…

2026/7/3 17:17:52 阅读更多 →
如何在Steam Deck上实现多平台游戏启动器的一键整合

如何在Steam Deck上实现多平台游戏启动器的一键整合

如何在Steam Deck上实现多平台游戏启动器的一键整合 【免费下载链接】NonSteamLaunchers-On-Steam-Deck Installs the latest UMU/GE-Proton and Non Steam Launchers under 1 Proton prefix folder and adds them to your steam library. Installs... Battle.net, Epic Games,…

2026/7/3 17:17:52 阅读更多 →
城配内卷时代:谁的“管理颗粒度”更细,谁就能活下来

城配内卷时代:谁的“管理颗粒度”更细,谁就能活下来

城配行业正在经历一场残酷的洗牌。市场规模早已突破万亿,但行业集中度极低——这意味着成千上万家中小车队在同一条赛道里拼价格、拼人效。订单还在涨,单价却在下滑。过去靠“多拉快跑”就能赚钱的日子一去不返,如今拼的是谁的成本更低、谁的…

2026/7/3 17:15:51 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻