我有一个使用API的应用。对于每个请求,我都会发送带有应用程序版本的标头,服务器会对其进行检查,如果版本太低,则会引发错误。我这样做是为了这样,以便将来在我引入重大更改时,我可以在应用程序上显示一个不错的消息,而不仅仅是崩溃
现在,整个应用程序中的任何请求都可能会返回此错误,因此,我想做的是在每个请求中全局捕获此错误,然后关闭打开的任何活动,然后打开一个新活动,并说一些好消息,例如“请去商店更新您的应用”。
有可能这样做吗?
回顾一下,我想做两件事:
从任何请求,通过OkHttp / Retrofit生成ObsoleteAppException
仅全局捕获此异常,关闭任何活动并打开新的警告警告
如果有用的话,我正在使用RxJava2和改造
答案 0 :(得分:0)
在您的Thread.setDefaultUncaughtExceptionHandler
类中使用Application
来捕获应用程序中的所有异常,并检查应用程序是否应崩溃或显示更新消息。
本文Hide your crashes gracefully (and still report them)和其他许多libraries可以帮助您“在Android中全局捕获异常”。
关于更改当前活动,已经有答案here。它基本上跟踪每个活动。当您需要更改当前活动时,只需完成当前活动并开始新的活动即可。
对于您的情况,整个方法似乎有些过大,但是我没有更好的主意...也许是自定义RxJava异常处理程序来捕获此异常?
答案 1 :(得分:0)
您可以使用UCE Handler来捕获异常,并向用户提供有关如何处理异常的选项。
在项目的build.gradle文件中:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
在应用程序或模块的build.gradle文件中:
dependencies {
compile 'com.github.jampez77:UCE-Handler:uce_handler:1.4.1'
}
在您的Application类中,使用构建器模式初始化库:
public class MyApplication extends Application {
@Override
public void onCreate() {
...
// Initialize UCE_Handler Library
new UCEHandler.Builder(this).build();
}
}
然后确保您按照以下方式更新清单:
<application
android:name=".MyApplication"