如何解决android b.a.a.b超时错误



我有一个android应用程序,它通过okhttpretrofit连接到后端,通过api从后端获取数据。登录过程将在后端获取大量数据。但是,有些用户遇到b.a.a.b错误。b.a.a.bAndroid术语中是什么,因为我可以被认为是安卓系统的新手。图像如下

或者错误是

mulaiLogin() || ERROR: b.a.a.b: HTTP 504 Connection Timed Out

这是改造和okhttp建设者代码

final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(timeout, TimeUnit.SECONDS)
.connectTimeout(timeout, TimeUnit.SECONDS)
.retryOnConnectionFailure(false)
.build();
retrofit = new Retrofit.Builder()
.baseUrl(BuildConfig.JariBaseURL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.client(okHttpClient)
.build();

虽然登录过程是这样的,但我使用的是rxjava

addSubscribe(apiStores.userLogin(body), new NetworkCallback<LoginResponse>() {
@Override
public void onSuccess(LoginResponse response) {
MyLocalDB.setAPILogTable(activity.getApplicationContext(), "Login", gson.toJson(body),
response.getCode(), response.getDesc(), MyMethods.GenerateRef(new Date()),
"-");
switch (response.getCode()) {....and so on

此错误发生在某些用户(现场工作组)身上。他们无法登录(完成API Login),而大多数用户可以成功登录。

我试图扩大timeout的大小,并在okhttp上设置retryOnConnectionFailure(false),但这似乎不能解决的问题

EDIT:所以在跟踪模糊处理之后,b.a.a.b是retrofit2.adapter.rxjava.HttpException

当您在发布版本上启用minifyEnabled时,Android会使用一个名为Proguard的工具来混淆您的类。这使得攻击者在反编译时更难理解它们。Proguard获取您的类名、变量和其他内容并对其进行更改。例如,MyNiceClass变成一个或看起来同样奇怪的东西。您可以使用app/build/outputs/mapping/appname/release中的mapping.txt来跟踪更改。

https://developer.android.com/studio/build/shrink-code

你有几个选择

1) 使用你的mapping.txt文件,试着弄清楚谈论的是什么类(没有多大乐趣)。

2) 试着重新构建你的堆叠比赛(如果你有):

3) 使用Crashlytics(Firebase所有)这样的工具上传mapping.txt文件,它会重新构建完整的堆栈跟踪,以便于阅读。

因此,简单的答案是没有人真正知道b.a.a.b代表什么。

您的问题:

也就是说,你的应用程序出现超时的情况看起来很简单。您已经做了正确的事情来增加超时延迟,但是在某个时刻,延迟变得太长,用户无法等待。

在启动网络请求之前,您是否检查用户是否有互联网连接?

你提到现场团队中的用户,在坚实的wifi连接上测试和在现场移动信号上测试有很大的区别。你应该在一个非常慢的连接上对你的应用程序运行一些测试,看看它的性能如何。您可能需要考虑更小的数据包或优化服务器响应。

希望能有所帮助。

最新更新