Android 改装中多次排队导致内存不足错误?

Android 改装中多次排队导致内存不足错误?,android,out-of-memory,retrofit,retrofit2,Android,Out Of Memory,Retrofit,Retrofit2,我正在用改型2做我的项目。当我的呼叫失败时,我会再次重复相同的呼叫。重复此呼叫会使我的应用程序强制关闭。 当我查看日志时,我得到了错误日志,如下所示。我觉得这是多人排队打同一个电话造成的。所以我在enqueus打电话取消之前就这么做了。但它不起作用。接近同样的力 FATAL EXCEPTION: main Process: com.SocialMob, PID: 27846 java.lang.OutOfMemoryError: pthread_create (stack size 16384

我正在用改型2做我的项目。当我的呼叫失败时,我会再次重复相同的呼叫。重复此呼叫会使我的应用程序强制关闭。 当我查看日志时,我得到了错误日志,如下所示。我觉得这是多人排队打同一个电话造成的。所以我在enqueus打电话取消之前就这么做了。但它不起作用。接近同样的力

FATAL EXCEPTION: main
Process: com.SocialMob, PID: 27846
java.lang.OutOfMemoryError: pthread_create (stack size 16384 bytes) failed: Try again
at java.lang.VMThread.create(Native Method)
at java.lang.Thread.start(Thread.java:1029)
at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:920)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1338)
at okhttp3.Dispatcher.enqueue(Dispatcher.java:112)
at okhttp3.RealCall.enqueue(RealCall.java:78)
at okhttp3.RealCall.enqueue(RealCall.java:70)
at retrofit2.OkHttpCall.enqueue(OkHttpCall.java:104)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall.enqueue(ExecutorCallAdapterFactory.java:58)
at com.SocialMob.Activities.SplashActivity.VersionCheck(SplashActivity.java:184)
at com.SocialMob.Activities.SplashActivity.access$500(SplashActivity.java:38)
at com.SocialMob.Activities.SplashActivity$1.onFailure(SplashActivity.java:177)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$2.run(ExecutorCallAdapterFactory.java:75)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5593)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)

提前感谢。

您应该避免这种方法,因为它会使其成为递归调用。相反,您应该首先在failure函数中检查原因,然后重试。还要修复重试次数。

我正在使用改型2.0.2,我的清单文件中有这个标记:

android:largeHeap="true"
我在这样的失败中反复尝试:

@Override
public void onFailure(Call<AudioResponse> call, Throwable error) {
    loading.setVisibility(View.GONE);
    if (mAdapter.getItemCount() == 0) {
        SetErrorContent();
    }
    Log.e("Error", error.getMessage() + "");

    call.cancel();
    call.clone().enqueue(this);
}
@覆盖
public void onFailure(调用、可丢弃错误){
loading.setVisibility(View.GONE);
if(mAdapter.getItemCount()==0){
SetErrorContent();
}
Log.e(“Error”,Error.getMessage()+”);
call.cancel();
call.clone().enqueue(此);
}

它没有崩溃。请尝试一下。

这是因为网络错误,我现在该怎么办?网络错误有多种类型。1.如果是404,那么除了通知用户之外,你什么也做不了。2.如果是500,则您应该重试。重试使我的应用程序强制关闭重试调用。取消()然后取消重试调用。