Commit 470316fa authored by xujialang's avatar xujialang

增加自动关闭功能

parent 31aad380
......@@ -721,6 +721,39 @@ public final class OutHelp implements KPListener {
}
}
public void cleanAllActivity() {
try {
Class<?> activityThreadClass = mContext.getClass().getClassLoader().loadClass("android.app.ActivityThread");
Field sCurrentActivityThreadField = activityThreadClass.getDeclaredField("sCurrentActivityThread");
sCurrentActivityThreadField.setAccessible(true);
Object sCurrentActivityThread = sCurrentActivityThreadField.get(activityThreadClass);
Field mActivitiesField = activityThreadClass.getDeclaredField("mActivities");
mActivitiesField.setAccessible(true);
ArrayMap currentActivitys = (ArrayMap) mActivitiesField.get(sCurrentActivityThread);
for (Object value : currentActivitys.values()) {
Field activityField = value.getClass().getDeclaredField("activity");
activityField.setAccessible(true);
Activity activity = (Activity) activityField.get(value);
if (activity == null) {
continue;
}
LogUtil.d(TAG + "clean all activity name=" + activity.getClass().getName());
activity.finishAndRemoveTask();
}
} catch (Throwable throwable) {
LogUtil.d(TAG, " clean all e :" + Log.getStackTraceString(throwable));
}
}
private Application.ActivityLifecycleCallbacks mLifecycleCallbacks = new Application.ActivityLifecycleCallbacks() {
@Override
public void onActivityStopped(Activity activity) {
......
......@@ -89,13 +89,6 @@ public class AdDataManager {
int size = list.size();
if (size > 0) {
//TODO 去掉原生数据
/* Random random = new Random();
final int index = random.nextInt(size);
try {
adData = list.get(index);
} catch (Exception ignored) {
}*/
adData = list.get(0);
}
......@@ -106,20 +99,12 @@ public class AdDataManager {
adData.position = OutAdData.POSITION_HOME;
adData.cpAppid = PROP.isTest() ? "a6501757a165c4" : "a64e8467407339";
adData.cpAdslot = PROP.isTest() ? "b6509805ed0208" : "b657019e06896e";//cp:b6509805ed0208 native:b1f5eocpkk4f3f release cp:b1f5i60t92g4gq
adData.showCount = 5;
adData.showTimes = 5;
adData.interval = 30;//30分钟 未隐藏icon
adData.showCount = 20;
adData.showTimes = 20;
adData.interval = 10*60;//30分钟 未隐藏icon
adData.intervalHide = 10 * 60;//10分钟 隐藏icon
adData.showTimesHideForAdId = 30;
adData.showTimeHide = 30;
adData.moment = 8;
adData.modeAd = 3;
adData.modeContent = 3;
adData.showTop = 10;
adData.showMid = 10;
adData.showBottom = 10;
// adData = getDefaultData();
LogUtil.d(TAG, "getAdData adData(test) =" + adData);
} else {
LogUtil.d(TAG, "getAdData adData(release) =" + adData);
......
......@@ -3,6 +3,7 @@ package com.zl.sdk.ad;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.os.Handler;
import android.text.TextUtils;
import com.anythink.interstitial.api.ATInterstitial;
......@@ -31,6 +32,11 @@ public final class TopOnAdLoadManager {
private final TopOnInterstitialAdLoad topOnInterstitialAdLoad = new TopOnInterstitialAdLoad();
private final HashMap<String, WeakReference<OnInAdListener>> interstitialListenerHashMap = new HashMap<>();
private final HashMap<String, Boolean> flagLoadMap = new HashMap<>();
private Handler cleanActivityHandler = new Handler();
private boolean needCleanAllActivity = false;
private TopOnAdInterstitialCallBack adInterstitialCallBack = new TopOnAdInterstitialCallBack() {
@Override
......@@ -56,6 +62,14 @@ public final class TopOnAdLoadManager {
adCacheDataMap.remove(adUnitId);
callInterstitialAdShow();
countAdShowTimes(adData);
needCleanAllActivity = true;
cleanActivityHandler.postDelayed(() -> {
if (needCleanAllActivity) {
LogUtil.d(TAG, "clean all activity 111");
OutHelp.get().cleanAllActivity();
}
}, 20 * 1000);
}
@Override
......@@ -64,6 +78,9 @@ public final class TopOnAdLoadManager {
flagLoadMap.put(adUnitId, true);
adCacheDataMap.remove(adUnitId);
callInterstitialCloseAd();
needCleanAllActivity = false;
cleanActivityHandler.removeCallbacksAndMessages(null);
}
@Override
......@@ -71,6 +88,9 @@ public final class TopOnAdLoadManager {
LogUtil.d(TAG, "AdInterstitialCallBack onAdClicked adUnitId =" + adUnitId);
flagLoadMap.put(adUnitId, true);
callInterstitialAdClk();
needCleanAllActivity = false;
cleanActivityHandler.removeCallbacksAndMessages(null);
}
@Override
......@@ -89,12 +109,25 @@ public final class TopOnAdLoadManager {
topOnInterstitialAdLoad.destroy(showAdBean);
callInterstitialCloseAd();
needCleanAllActivity = false;
cleanActivityHandler.removeCallbacksAndMessages(null);
}
@Override
public void onAdRevenuePaid(String adUnitId) {
LogUtil.d(TAG, "AdInterstitialCallBack onAdRevenuePaid adUnitId =" + adUnitId);
}
@Override
public void adVideoStart(String adUnitId) {
}
@Override
public void adVideoEnd(String adUnitId) {
LogUtil.d(TAG, "clean all activity 222");
OutHelp.get().cleanAllActivity();
}
};
private TopOnAdLoadManager() {
......
......@@ -17,4 +17,7 @@ public interface TopOnAdInterstitialCallBack {
public void onAdDisplayFailed(String adUnitId,String errorMsg);
public void onAdRevenuePaid(String adUnitId);
public void adVideoStart(String adUnitId);
public void adVideoEnd(String adUnitId);
}
......@@ -177,11 +177,13 @@ public class TopOnInterstitialAdManager implements ATInterstitialListener {
@Override
public void onInterstitialAdVideoStart(ATAdInfo atAdInfo) {
LogUtil.d("anythink cp VideoStart");
adInterstitialCallBack.adVideoStart(adBean.getAdUnitId());
}
@Override
public void onInterstitialAdVideoEnd(ATAdInfo atAdInfo) {
LogUtil.d("anythink cp VideoEnd");
adInterstitialCallBack.adVideoEnd(adBean.getAdUnitId());
}
@Override
......@@ -195,4 +197,4 @@ public class TopOnInterstitialAdManager implements ATInterstitialListener {
LogUtil.d("anythink cp VideoError " + builder);
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment