AdMob для Android ответственен за более чем 90% сбоев и ANR во всех моих приложениях. Все эти сбои поступали в AdMob несколько лет назад, и, несмотря на все обходные пути и обновления, сбои продолжают появляться. Иногда один сбой будет исправлен, но заменен на ANR. Иногда все будет работать нормально, и однажды я получу сотни аварий.
Я уверен, что есть причины, по которым команда AdMob не может все исправить, но есть ли у моего приложения умный способ отловить все сбои, вызванные плагином AdMob?
Пример:
Fatal Exception: java.util.concurrent.TimeoutException: com.google.android.gms.ads.nonagon.ad.interstitial.b.finalize() timed out after 10 seconds
at com.google.android.gms.ads.internal.webview.j.k(j.java:3)
at com.google.android.gms.ads.internal.webview.v.destroy(v.java:4)
at com.google.android.gms.ads.internal.webview.t.destroy(t.java:10)
at com.google.android.gms.ads.nonagon.ad.interstitial.b.finalize(b.java:2)
at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:217)
at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:200)
at java.lang.Thread.run(Thread.java:818)
И еще:
Caused by java.lang.IllegalStateException: Only fullscreen activities can request orientation
at android.os.Parcel.readException(Parcel.java:1975)
at android.os.Parcel.readException(Parcel.java:1913)
at android.app.IActivityManager$Stub$Proxy.setRequestedOrientation(IActivityManager.java:6186)
at android.app.Activity.setRequestedOrientation(Activity.java:5840)
at com.google.android.gms.ads.internal.overlay.zzd.close(zzd.java:146)
at com.google.android.gms.ads.internal.overlay.zzd.zznh(zzd.java:166)
at com.google.android.gms.ads.internal.overlay.zzd.close(zzd.java:61)
at com.google.android.gms.ads.internal.overlay.client.c.a(c.java:33)
at og.onTransact(og.java:4)
at android.os.Binder.transact(Binder.java:612)
at com.google.android.gms.internal.ads.zzej.transactAndReadExceptionReturnVoid(zzej.java:7)
at com.google.android.gms.internal.ads.zzaar.onCreate(zzaar.java:8)
at com.google.android.gms.ads.AdActivity.onCreate(AdActivity.java:29)
at android.app.Activity.performCreate(Activity.java:7183)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
И еще:
Caused by java.lang.ClassNotFoundException: Didn't find class "org.apache.http.ProtocolVersion" on path: DexPathList[[zip file "/data/user_de/0/com.google.android.gms/app_chimera/m/00000099/dl-AdsFdrDynamite.integ_20290000008.apk"],nativeLibraryDirectories=[/data/user_de/0/com.google.android.gms/app_chimera/m/00000099/n/armeabi-v7a, /data/user_de/0/com.google.android.gms/app_chimera/m/00000099/n/armeabi, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at ab.loadClass(ab.java:4)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at ly.b(ly.java:2)
at lx.a(lx.java:1)
at lz.a(lz.java:29)
at com.google.android.gms.ads.internal.util.aq.a(aq.java:10)
at lc.a(lc.java:8)
at lc.run(lc.java:2)
Очевидно, что мне все равно, не будут ли показываться объявления в этих случаях, я просто не хочу, чтобы большая часть моей работы над моими приложениями была связана с AdMob, и я не хочу, чтобы AdMob снижал жизнеспособность Android. Я бы выбрал другого провайдера рекламы, но я не знаю, будут ли у них и эти проблемы (не понимаю, почему у них не будет).