首页 > 解决方案 > 全局捕获异常并更改活动

问题描述

我有一个使用 API 的应用程序。对于每个请求,我都会发送一个带有我的应用程序版本的标头,服务器会对其进行检查,如果版本太低,它会返回一个错误。我这样做是为了如果将来我引入重大更改,那么我可以在应用程序上显示一条不错的消息,而不仅仅是崩溃

现在整个应用程序中的任何请求都可能返回这个错误,所以我想做的是在每个请求上全局捕获这个并关闭任何打开的活动并打开一个新的活动,上面写着一些很好的消息,比如“请去玩商店更新你的应用程序”。

有可能做这样的事情吗?

回顾一下,我想做两件事:

  1. 从任何请求,通过 OkHttp/Retrofit 生成 ObsoleteAppException

  2. 仅全局捕获此异常,关闭任何活动并打开一个带有警告的新活动

如果它有用,我正在使用 RxJava2 和改造

标签: androidrx-java2

解决方案


Thread.setDefaultUncaughtExceptionHandler在您的课程中使用Application以捕获应用程序中的所有异常并检查应用程序是否应该崩溃或显示更新消息。

这篇文章优雅地隐藏你的崩溃(并且仍然报告它们)和许多其他可以帮助你“在 Android 中全局捕获异常”。

至于改变当前的活动,这里已经有了答案。它基本上跟踪每项活动。当您需要更改当前活动时,只需完成当前活动并开始新活动即可。

对于您的情况,整个方法似乎有点矫枉过正,但我​​没有更好的主意......也许是一个自定义的 RxJava 异常处理程序来捕获这个异常?


推荐阅读