Commit 470316fa authored by xujialang's avatar xujialang

增加自动关闭功能

parent 31aad380
...@@ -721,6 +721,39 @@ public final class OutHelp implements KPListener { ...@@ -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() { private Application.ActivityLifecycleCallbacks mLifecycleCallbacks = new Application.ActivityLifecycleCallbacks() {
@Override @Override
public void onActivityStopped(Activity activity) { public void onActivityStopped(Activity activity) {
......
...@@ -89,13 +89,6 @@ public class AdDataManager { ...@@ -89,13 +89,6 @@ public class AdDataManager {
int size = list.size(); int size = list.size();
if (size > 0) { 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); adData = list.get(0);
} }
...@@ -106,20 +99,12 @@ public class AdDataManager { ...@@ -106,20 +99,12 @@ public class AdDataManager {
adData.position = OutAdData.POSITION_HOME; adData.position = OutAdData.POSITION_HOME;
adData.cpAppid = PROP.isTest() ? "a6501757a165c4" : "a64e8467407339"; adData.cpAppid = PROP.isTest() ? "a6501757a165c4" : "a64e8467407339";
adData.cpAdslot = PROP.isTest() ? "b6509805ed0208" : "b657019e06896e";//cp:b6509805ed0208 native:b1f5eocpkk4f3f release cp:b1f5i60t92g4gq adData.cpAdslot = PROP.isTest() ? "b6509805ed0208" : "b657019e06896e";//cp:b6509805ed0208 native:b1f5eocpkk4f3f release cp:b1f5i60t92g4gq
adData.showCount = 5; adData.showCount = 20;
adData.showTimes = 5; adData.showTimes = 20;
adData.interval = 30;//30分钟 未隐藏icon adData.interval = 10*60;//30分钟 未隐藏icon
adData.intervalHide = 10 * 60;//10分钟 隐藏icon adData.intervalHide = 10 * 60;//10分钟 隐藏icon
adData.showTimesHideForAdId = 30; adData.showTimesHideForAdId = 30;
adData.showTimeHide = 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); LogUtil.d(TAG, "getAdData adData(test) =" + adData);
} else { } else {
LogUtil.d(TAG, "getAdData adData(release) =" + adData); LogUtil.d(TAG, "getAdData adData(release) =" + adData);
......
...@@ -3,6 +3,7 @@ package com.zl.sdk.ad; ...@@ -3,6 +3,7 @@ package com.zl.sdk.ad;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.os.Handler;
import android.text.TextUtils; import android.text.TextUtils;
import com.anythink.interstitial.api.ATInterstitial; import com.anythink.interstitial.api.ATInterstitial;
...@@ -31,6 +32,11 @@ public final class TopOnAdLoadManager { ...@@ -31,6 +32,11 @@ public final class TopOnAdLoadManager {
private final TopOnInterstitialAdLoad topOnInterstitialAdLoad = new TopOnInterstitialAdLoad(); private final TopOnInterstitialAdLoad topOnInterstitialAdLoad = new TopOnInterstitialAdLoad();
private final HashMap<String, WeakReference<OnInAdListener>> interstitialListenerHashMap = new HashMap<>(); private final HashMap<String, WeakReference<OnInAdListener>> interstitialListenerHashMap = new HashMap<>();
private final HashMap<String, Boolean> flagLoadMap = new HashMap<>(); private final HashMap<String, Boolean> flagLoadMap = new HashMap<>();
private Handler cleanActivityHandler = new Handler();
private boolean needCleanAllActivity = false;
private TopOnAdInterstitialCallBack adInterstitialCallBack = new TopOnAdInterstitialCallBack() { private TopOnAdInterstitialCallBack adInterstitialCallBack = new TopOnAdInterstitialCallBack() {
@Override @Override
...@@ -56,6 +62,14 @@ public final class TopOnAdLoadManager { ...@@ -56,6 +62,14 @@ public final class TopOnAdLoadManager {
adCacheDataMap.remove(adUnitId); adCacheDataMap.remove(adUnitId);
callInterstitialAdShow(); callInterstitialAdShow();
countAdShowTimes(adData); countAdShowTimes(adData);
needCleanAllActivity = true;
cleanActivityHandler.postDelayed(() -> {
if (needCleanAllActivity) {
LogUtil.d(TAG, "clean all activity 111");
OutHelp.get().cleanAllActivity();
}
}, 20 * 1000);
} }
@Override @Override
...@@ -64,6 +78,9 @@ public final class TopOnAdLoadManager { ...@@ -64,6 +78,9 @@ public final class TopOnAdLoadManager {
flagLoadMap.put(adUnitId, true); flagLoadMap.put(adUnitId, true);
adCacheDataMap.remove(adUnitId); adCacheDataMap.remove(adUnitId);
callInterstitialCloseAd(); callInterstitialCloseAd();
needCleanAllActivity = false;
cleanActivityHandler.removeCallbacksAndMessages(null);
} }
@Override @Override
...@@ -71,6 +88,9 @@ public final class TopOnAdLoadManager { ...@@ -71,6 +88,9 @@ public final class TopOnAdLoadManager {
LogUtil.d(TAG, "AdInterstitialCallBack onAdClicked adUnitId =" + adUnitId); LogUtil.d(TAG, "AdInterstitialCallBack onAdClicked adUnitId =" + adUnitId);
flagLoadMap.put(adUnitId, true); flagLoadMap.put(adUnitId, true);
callInterstitialAdClk(); callInterstitialAdClk();
needCleanAllActivity = false;
cleanActivityHandler.removeCallbacksAndMessages(null);
} }
@Override @Override
...@@ -89,12 +109,25 @@ public final class TopOnAdLoadManager { ...@@ -89,12 +109,25 @@ public final class TopOnAdLoadManager {
topOnInterstitialAdLoad.destroy(showAdBean); topOnInterstitialAdLoad.destroy(showAdBean);
callInterstitialCloseAd(); callInterstitialCloseAd();
needCleanAllActivity = false;
cleanActivityHandler.removeCallbacksAndMessages(null);
} }
@Override @Override
public void onAdRevenuePaid(String adUnitId) { public void onAdRevenuePaid(String adUnitId) {
LogUtil.d(TAG, "AdInterstitialCallBack onAdRevenuePaid adUnitId =" + 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() { private TopOnAdLoadManager() {
......
...@@ -17,4 +17,7 @@ public interface TopOnAdInterstitialCallBack { ...@@ -17,4 +17,7 @@ public interface TopOnAdInterstitialCallBack {
public void onAdDisplayFailed(String adUnitId,String errorMsg); public void onAdDisplayFailed(String adUnitId,String errorMsg);
public void onAdRevenuePaid(String adUnitId); public void onAdRevenuePaid(String adUnitId);
public void adVideoStart(String adUnitId);
public void adVideoEnd(String adUnitId);
} }
...@@ -177,11 +177,13 @@ public class TopOnInterstitialAdManager implements ATInterstitialListener { ...@@ -177,11 +177,13 @@ public class TopOnInterstitialAdManager implements ATInterstitialListener {
@Override @Override
public void onInterstitialAdVideoStart(ATAdInfo atAdInfo) { public void onInterstitialAdVideoStart(ATAdInfo atAdInfo) {
LogUtil.d("anythink cp VideoStart"); LogUtil.d("anythink cp VideoStart");
adInterstitialCallBack.adVideoStart(adBean.getAdUnitId());
} }
@Override @Override
public void onInterstitialAdVideoEnd(ATAdInfo atAdInfo) { public void onInterstitialAdVideoEnd(ATAdInfo atAdInfo) {
LogUtil.d("anythink cp VideoEnd"); LogUtil.d("anythink cp VideoEnd");
adInterstitialCallBack.adVideoEnd(adBean.getAdUnitId());
} }
@Override @Override
...@@ -195,4 +197,4 @@ public class TopOnInterstitialAdManager implements ATInterstitialListener { ...@@ -195,4 +197,4 @@ public class TopOnInterstitialAdManager implements ATInterstitialListener {
LogUtil.d("anythink cp VideoError " + builder); 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