全球捕获异常和变化的活动

问题描述 投票:0回答:2

我有一个消耗API的应用程序。随着每一个要求,我送一个头与我的应用程序的版本,服务器会检查它,如果版本太低,它会抛出一个错误回来。我做到了这样,这样,如果将来我介绍的重大更改,然后我可以显示在应用一个不错的消息,而不仅仅是崩溃

现在,整个应用程序的任何请求,有可能返回此错误,所以我想要做的是对每一个请求,并密切取其活动是开放的全球赶上这一点,并打开一个新的说法了一些不错的消息,如“请到Play商店更新应用”。

是否有可能做这种事?

总括来说,我想要做的两件事情:

  1. 从任何请求,生成通过OkHttp /改造的ObsoleteAppException
  2. 仅捕获该异常全局,关闭所有活动,并打开一个新的前车之鉴

如果它的任何有用的,我使用RxJava2和改造

android rx-java2
2个回答
0
投票

使用Thread.setDefaultUncaughtExceptionHandlerApplication类赶上应用中的所有的异常,并检查应用程序崩溃,应该还是显示的更新消息。

本文Hide your crashes gracefully (and still report them)和许多其他libraries可以帮助你“全球catch异常Android中”。

为改变当前活动,目前已经有答案qazxsw POI。它基本上跟踪每一项活动。当你需要改变当前的活动,只是完成当前和开始一个新的。

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


0
投票

您可以使用here捕捉异常,并就如何处理它的选择呈现给用户。

在项目的文件的build.gradle:

UCE Handler

在应用程序或模块的文件的build.gradle:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

在应用程序中使用类生成器模式初始化库:

dependencies {
    compile 'com.github.jampez77:UCE-Handler:uce_handler:1.4.1'
}

然后确保你更新你的清单如下:

public class MyApplication extends Application {
    @Override 
    public void onCreate() { 
        ...
        // Initialize UCE_Handler Library
        new UCEHandler.Builder(this).build();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.