public void fetchAdForUrl(String url) { mCurrentTaskId++; Log.i("MoPub", "Fetching ad for task #" + mCurrentTaskId); if (mCurrentTask != null) { mCurrentTask.cancel(true); } mCurrentTask = new AdFetchTask(this); if (Build.VERSION.SDK_INT >= VERSION_CODE_ICE_CREAM_SANDWICH) { Class<?> cls = AdFetchTask.class; Class<?>[] parameterTypes = {Executor.class, Object[].class}; String[] parameters = {url}; try { Method method = cls.getMethod("executeOnExecutor", parameterTypes); Field field = cls.getField("THREAD_POOL_EXECUTOR"); method.invoke(mCurrentTask, field.get(cls), parameters); } catch (NoSuchMethodException exception) { Log.d("MoPub", "Error executing AdFetchTask on ICS+, method not found."); } catch (InvocationTargetException exception) { Log.d("MoPub", "Error executing AdFetchTask on ICS+, thrown by executeOnExecutor."); } catch (Exception exception) { Log.d("MoPub", "Error executing AdFetchTask on ICS+: " + exception.toString()); } } else { mCurrentTask.execute(url); } }
public void cancelFetch() { if (mCurrentTask != null) { Log.i("MoPub", "Canceling fetch ad for task #" + mCurrentTaskId); mCurrentTask.cancel(true); } }