Closed DjentAgent closed 1 year ago
Добрый день, мы валидируем вызов с главного потока с помощью следующей проверки:
Thread.currentThread() == Looper.getMainLooper().thread
.
Если данное условие false, то метод вашего приложения onLoadAd вызывается не с главного потока.
Провалидируйте пожалуйста, что это условие проходит в вашем приложении на вызов onAdLoaded.
Thread.currentThread() == Looper.getMainLooper().thread
Вот, как видите, в дебаге все прекрасно заходит с таким условием. Что еще проверить?
Спасибо. Вызов метода onAdLoad(context: Context) в коде вашего приложения происходит только из метода onYandexAdsInitialized()? Проверьте это пожалуйста добавив следующий assert прямо перед созданием объекта InterstitialAd:
assert(Thread.currentThread() == Looper.getMainLooper().getThread()); mInterstitialAd = new InterstitialAd(App.getContext());
Также по возможности пришлите полный stacktrace возникающего из InterstitialAd крэша, включающий элементы stacktrace от самого старта потока.
А не может быть проблема в том, что загрузка интерстишиала начинается после коллбека от объекта, который инициализирует библиотеку? Коллбек, как я понимаю, может и не в главном потоке отработать?
Да, в данный момент коллбэк завершения инициализации SDK может отрабатывать не на главном потоке. Мы поправим эту логику в SDK перенеся коллбэк строго на главным поток. Спасибо!
Пока мы не поправили проблему в SDK, реализуйте пожалуйста в приложении перевод вызова onAdLoad на главный поток.
Спасибо! Будем ждать обновления, пока полечим через new Handler(Looper.getMainLooper()).
Я правильно понимаю, что эта проверка на главный поток только для интерстишиалов?
Проверка на вызов API SDK с главного потока была добавлена для всех форматов рекламы. Проверка отрабатывает только в Debug сборке приложения, в Release сборке проверка отключается.
Добрый день, исправили проблему в релизе 5.5.1.
Версия 5.6.0 - ошибка осталась
После обновления до 5.5.0 с 5.4.1 получаю следующую ошибку :
FATAL EXCEPTION: pool-22-thread-3 Process: com.appblockgames.freecraftexploration, PID: 2681 com.yandex.mobile.ads.impl.o40: SDK API usage from a background thread detected. Please, use SDK API just from the main thread. at com.yandex.mobile.ads.impl.h70.a(SourceFile:3) at com.yandex.mobile.ads.interstitial.InterstitialAd.(SourceFile:4)
com.project.sample.ads.yandex.YandexAdsInterstitial.onLoadAd(YandexAdsInterstitial.java:40)
Бэкграунд треды для рекламы не создавали.
`public class YandexAdsInterstitial extends AbstractInterstitial {
}`