diff --git a/PrebidMobile/PrebidMobile-core/src/main/java/org/prebid/mobile/rendering/networking/modelcontrollers/BidRequester.java b/PrebidMobile/PrebidMobile-core/src/main/java/org/prebid/mobile/rendering/networking/modelcontrollers/BidRequester.java index 468e1f7cd..00c0a8e15 100644 --- a/PrebidMobile/PrebidMobile-core/src/main/java/org/prebid/mobile/rendering/networking/modelcontrollers/BidRequester.java +++ b/PrebidMobile/PrebidMobile-core/src/main/java/org/prebid/mobile/rendering/networking/modelcontrollers/BidRequester.java @@ -36,7 +36,9 @@ public BidRequester(AdUnitConfiguration config, AdRequestInput adRequestInput, R @Override public void startAdRequest() { if (TextUtils.isEmpty(adConfiguration.getConfigId())) { - adResponseCallBack.onError("No configuration id specified.", 0); + if (adResponseCallBack != null) { + adResponseCallBack.onError("No configuration id specified.", 0); + } return; } diff --git a/PrebidMobile/PrebidMobile-core/src/main/java/org/prebid/mobile/rendering/networking/modelcontrollers/Requester.java b/PrebidMobile/PrebidMobile-core/src/main/java/org/prebid/mobile/rendering/networking/modelcontrollers/Requester.java index 962e67a2c..d42704f73 100644 --- a/PrebidMobile/PrebidMobile-core/src/main/java/org/prebid/mobile/rendering/networking/modelcontrollers/Requester.java +++ b/PrebidMobile/PrebidMobile-core/src/main/java/org/prebid/mobile/rendering/networking/modelcontrollers/Requester.java @@ -47,6 +47,7 @@ import org.prebid.mobile.rendering.utils.helpers.AppInfoManager; import org.prebid.mobile.rendering.utils.helpers.ExternalViewerUtils; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -59,6 +60,7 @@ public abstract class Requester { protected URLBuilder urlBuilder; protected ResponseHandler adResponseCallBack; protected BaseNetworkTask networkTask; + protected AdIdManager.FetchAdIdInfoTask fetchAdIdInfoTask; Requester( AdUnitConfiguration config, @@ -86,7 +88,11 @@ public void destroy() { networkTask.destroy(); } networkTask = null; + if (fetchAdIdInfoTask != null) { + fetchAdIdInfoTask.cancel(true); + } adResponseCallBack = null; + fetchAdIdInfoTask = null; } protected List getParameterBuilders() { @@ -125,7 +131,7 @@ protected void getAdId() { UserConsentManager userConsentManager = ManagersResolver.getInstance().getUserConsentManager(); if (userConsentManager.canAccessDeviceData()) { - AdIdManager.initAdId(context, new AdIdFetchListener() { + fetchAdIdInfoTask = AdIdManager.initAdId(context, new AdIdFetchListener() { @Override public void adIdFetchCompletion() { LogUtil.info(TAG, "Advertising id was received"); @@ -149,7 +155,9 @@ public void adIdFetchFailure() { private void sendAdException(String logMsg, String exceptionMsg) { LogUtil.warning(TAG, logMsg); AdException adException = new AdException(AdException.INIT_ERROR, exceptionMsg); - adResponseCallBack.onErrorWithException(adException, 0); + if (adResponseCallBack != null) { + adResponseCallBack.onErrorWithException(adException, 0); + } } protected void makeAdRequest() { diff --git a/PrebidMobile/PrebidMobile-core/src/main/java/org/prebid/mobile/rendering/utils/helpers/AdIdManager.java b/PrebidMobile/PrebidMobile-core/src/main/java/org/prebid/mobile/rendering/utils/helpers/AdIdManager.java index 523d8973a..ed5b57272 100644 --- a/PrebidMobile/PrebidMobile-core/src/main/java/org/prebid/mobile/rendering/utils/helpers/AdIdManager.java +++ b/PrebidMobile/PrebidMobile-core/src/main/java/org/prebid/mobile/rendering/utils/helpers/AdIdManager.java @@ -50,7 +50,7 @@ private AdIdManager() { } // Wrap method execution in try / catch to avoid crashes in runtime if publisher didn't include identifier dependencies - public static void initAdId(final Context context, final AdIdFetchListener listener) { + public static FetchAdIdInfoTask initAdId(final Context context, final AdIdFetchListener listener) { try { GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance(); int resultCode = apiAvailability.isGooglePlayServicesAvailable(context); @@ -67,6 +67,7 @@ public static void initAdId(final Context context, final AdIdFetchListener liste listener.adIdFetchFailure(); } }, AD_ID_TIMEOUT_MS); + return getAdIdInfoTask; } else { listener.adIdFetchCompletion(); @@ -75,6 +76,7 @@ public static void initAdId(final Context context, final AdIdFetchListener liste catch (Throwable throwable) { LogUtil.error(TAG, "Failed to initAdId: " + Log.getStackTraceString(throwable) + "\nDid you add necessary dependencies?"); } + return null; } /** @@ -97,7 +99,7 @@ public static void setAdId(String adId) { sAdId = adId; } - private static class FetchAdIdInfoTask extends AsyncTask { + public static class FetchAdIdInfoTask extends AsyncTask { private final WeakReference contextWeakReference; private final AdIdFetchListener adIdFetchListener;