android - 全局捕获异常并更改活动
问题描述
我有一个使用 API 的应用程序。对于每个请求,我都会发送一个带有我的应用程序版本的标头,服务器会对其进行检查,如果版本太低,它会返回一个错误。我这样做是为了如果将来我引入重大更改,那么我可以在应用程序上显示一条不错的消息,而不仅仅是崩溃
现在整个应用程序中的任何请求都可能返回这个错误,所以我想做的是在每个请求上全局捕获这个并关闭任何打开的活动并打开一个新的活动,上面写着一些很好的消息,比如“请去玩商店更新你的应用程序”。
有可能做这样的事情吗?
回顾一下,我想做两件事:
从任何请求,通过 OkHttp/Retrofit 生成 ObsoleteAppException
仅全局捕获此异常,关闭任何活动并打开一个带有警告的新活动
如果它有用,我正在使用 RxJava2 和改造
解决方案
Thread.setDefaultUncaughtExceptionHandler
在您的课程中使用Application
以捕获应用程序中的所有异常并检查应用程序是否应该崩溃或显示更新消息。
这篇文章优雅地隐藏你的崩溃(并且仍然报告它们)和许多其他库可以帮助你“在 Android 中全局捕获异常”。
至于改变当前的活动,这里已经有了答案。它基本上跟踪每项活动。当您需要更改当前活动时,只需完成当前活动并开始新活动即可。
对于您的情况,整个方法似乎有点矫枉过正,但我没有更好的主意......也许是一个自定义的 RxJava 异常处理程序来捕获这个异常?
推荐阅读
- assembly - ARM 程序集无法从地址加载
- html - html-验证时输入背景颜色更新
- laravel - Laravel Homestead 有多个实例,其中一个说明站点无法访问
- c# - 从接口执行 EF_context.Database.ExecuteSqlRawAsync
- visual-studio-code - 如何让 Prettier 使用自动保存并保留重做日志
- android - Jetpack Compose Vertical Grid 单项跨度大小
- bash - 用于计数/验证管道的正则表达式
- facebook - 如何通过调用 Graph API 获取 facebook 用户元数据?
- wpf - 工具栏中的标签前景
- sql - 用于检查列值的唯一性的 SQL 查询