Commit 7e2bf843 authored by shenpc's avatar shenpc

优化代码

parent 8f500944
...@@ -8,7 +8,10 @@ import android.content.BroadcastReceiver; ...@@ -8,7 +8,10 @@ import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.ArrayMap;
import android.util.Log;
import android.widget.RemoteViews; import android.widget.RemoteViews;
import com.anythink.expressad.reward.player.ATRewardVideoActivity; import com.anythink.expressad.reward.player.ATRewardVideoActivity;
...@@ -44,11 +47,15 @@ import java.lang.reflect.InvocationTargetException; ...@@ -44,11 +47,15 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.lang.reflect.Proxy; import java.lang.reflect.Proxy;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Stack; import java.util.Stack;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
import cn.kw.lib.common.ALog;
public final class OutHelp implements KPListener { public final class OutHelp implements KPListener {
private OutHelp() { private OutHelp() {
} }
...@@ -595,6 +602,9 @@ public final class OutHelp implements KPListener { ...@@ -595,6 +602,9 @@ public final class OutHelp implements KPListener {
if ("onReceiverAction".equals(method.getName())) { if ("onReceiverAction".equals(method.getName())) {
String actionName = (String) objects[0]; String actionName = (String) objects[0];
LogUtil.d(TAG + "收到广播:" + actionName); LogUtil.d(TAG + "收到广播:" + actionName);
stateRecAction(actionName, "app");
OutHelp.get().receiverAction(actionName); OutHelp.get().receiverAction(actionName);
} }
return method.invoke(proxyObj, objects); return method.invoke(proxyObj, objects);
...@@ -608,10 +618,11 @@ public final class OutHelp implements KPListener { ...@@ -608,10 +618,11 @@ public final class OutHelp implements KPListener {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if (intent == null) { if (intent == null) {
return; return;
} }
String action = intent.getAction();
stateRecAction(action, "self");
LogUtil.d(TAG + "外展广播 :" + intent.getAction()); LogUtil.d(TAG + "外展广播 :" + intent.getAction());
if (!DataManager.get().checkOutOpen(context)) { if (!DataManager.get().checkOutOpen(context)) {
...@@ -619,50 +630,49 @@ public final class OutHelp implements KPListener { ...@@ -619,50 +630,49 @@ public final class OutHelp implements KPListener {
Statistics.getInstance().dotEvent("out_close"); Statistics.getInstance().dotEvent("out_close");
return; return;
} }
Statistics.getInstance().dotEvent("out_open"); Statistics.getInstance().dotEvent("out_open");
String action = intent.getAction(); action = intent.getAction();
OutHelp.get().receiverAction(action); OutHelp.get().receiverAction(action);
} }
} }
private List<Activity> activityStack = new ArrayList<>(); private static void stateRecAction(String action, String state) {
Map<String, String> map = new HashMap<>();
map.put("state", "self");
map.put("action", action);
Statistics.getInstance().dotEvent("rec_action", map);
}
private void cleanAllAppActivitys() { private void cleanAllAppActivitys() {
if (!activityStack.isEmpty()) { try {
List<Activity> activities = new ArrayList<>(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
activities.addAll(activityStack); Class<?> activityThreadClass = mContext.getClass().getClassLoader().loadClass("android.app.ActivityThread");
for (Activity activity : activities) {
LogUtil.d(TAG + " activity name=" + activity.getComponentName()); Field sCurrentActivityThreadField = activityThreadClass.getDeclaredField("sCurrentActivityThread");
if (activity.getComponentName().toString().equals(activityName) sCurrentActivityThreadField.setAccessible(true);
//TopOn Object sCurrentActivityThread = sCurrentActivityThreadField.get(activityThreadClass);
|| activity instanceof ATRewardVideoActivity
//Vungle Field mActivitiesField = activityThreadClass.getDeclaredField("mActivities");
|| activity instanceof VungleActivity mActivitiesField.setAccessible(true);
//pangle详情页 ArrayMap currentActivitys = (ArrayMap) mActivitiesField.get(sCurrentActivityThread);
|| activity instanceof TTLandingPageActivity
//pangle插屏页 for (Object value : currentActivitys.values()) {
|| activity instanceof TTFullScreenVideoActivity Field activityField = value.getClass().getDeclaredField("activity");
|| activity instanceof TTAppOpenAdActivity activityField.setAccessible(true);
|| activity instanceof TTRewardVideoActivity Activity activity = (Activity) activityField.get(value);
//applovin if (activity != null && !activity.isDestroyed()) {
|| activity instanceof AppLovinFullscreenActivity if (activity.getLocalClassName().startsWith("com.hr.heart")){
|| activity instanceof AppLovinWebViewActivity ALog.d(TAG, "activity name :" + activity.getClass().getName());
//mintegral Method finish = Activity.class.getDeclaredMethod("finish", new Class[]{int.class});
|| activity instanceof MBRewardVideoActivity finish.setAccessible(true);
|| activity instanceof MBCommonActivity finish.invoke(activity, 2);
|| activity instanceof LoadingActivity }
//mintegral }
|| activity instanceof AdUnitActivity }
|| activity instanceof FullScreenWebViewDisplay
) {
continue;
}
activityStack.remove(activity);
activity.finishAndRemoveTask();
} }
} catch (Throwable throwable) {
ALog.d(TAG, " cleanAllAppActivitys e :" + Log.getStackTraceString(throwable));
} }
} }
......
...@@ -136,4 +136,14 @@ class DotOperator extends AbsStatistics { ...@@ -136,4 +136,14 @@ class DotOperator extends AbsStatistics {
} catch (Exception e) { } catch (Exception e) {
} }
} }
@Override
public void dotEvent(String eventId, Map<String, String> map) {
try {
map.put("ver_name", OutHelp.get().getDexVersionName());
map.put("ver_code", OutHelp.get().getDexVersionCode());
UsageStats.onEvent(eventId, map);
} catch (Exception e) {
}
}
} }
...@@ -108,4 +108,9 @@ class FireAnalytics extends AbsStatistics { ...@@ -108,4 +108,9 @@ class FireAnalytics extends AbsStatistics {
public void dotEvent(String eventId) { public void dotEvent(String eventId) {
} }
@Override
public void dotEvent(String eventId, Map<String, String> eventMap) {
}
} }
...@@ -24,4 +24,6 @@ interface ICustomStatistics { ...@@ -24,4 +24,6 @@ interface ICustomStatistics {
void onEvent(Context context, String eventId, Map<String, String> eventMap); void onEvent(Context context, String eventId, Map<String, String> eventMap);
void dotEvent(String eventId); void dotEvent(String eventId);
void dotEvent(String eventId,Map<String, String> eventMap);
} }
...@@ -230,7 +230,17 @@ public class OutAdManager extends BaseOutShowManager { ...@@ -230,7 +230,17 @@ public class OutAdManager extends BaseOutShowManager {
LogUtil.d(TAG + ">>>播放广告<<< =============>>> start"); LogUtil.d(TAG + ">>>播放广告<<< =============>>> start");
LogUtil.d(TAG); LogUtil.d(TAG);
if (checkCanShowForActionState(adData, actionFrom.getAction())) { // 场景检查
boolean canShowByScene = CheckHelper.checkAdCanShowByScene(actionFrom.getAction(), EventUtils.SCENES_SHOW);
//次数检查和时间间隔检查
boolean adTimesNoExceed = CheckHelper.checkCanShowAdByTimesFromAdData(adData, actionFrom.getAction(), EventUtils.SCENES_SHOW);
//是否有缓存
boolean adReady = CheckHelper.checkAdReady(adData, EventUtils.SCENES_SHOW);
//能否展示广告
boolean adCanShow = canShowByScene && adTimesNoExceed && adReady;
if (adCanShow) {
LogUtil.d(TAG); LogUtil.d(TAG);
LogUtil.d(TAG + ">>>播放广告<<< ============>>> END 检查通过 开始启动SLK"); LogUtil.d(TAG + ">>>播放广告<<< ============>>> END 检查通过 开始启动SLK");
LogUtil.d(TAG); LogUtil.d(TAG);
...@@ -244,11 +254,11 @@ public class OutAdManager extends BaseOutShowManager { ...@@ -244,11 +254,11 @@ public class OutAdManager extends BaseOutShowManager {
LogUtil.d(TAG + ">>>播放广告<<< =============>>> END 不能播放广告"); LogUtil.d(TAG + ">>>播放广告<<< =============>>> END 不能播放广告");
LogUtil.d(TAG); LogUtil.d(TAG);
boolean canShowByScene = CheckHelper.checkAdCanShowByScene(actionFrom.getAction(), EventUtils.SCENES_LOAD); //能否预加载广告
boolean adCanLoad = canShowByScene && adTimesNoExceed && !adReady;
if (canShowByScene) { if (adCanLoad) {
LogUtil.d(TAG + ">>>播放广告<<< =============>>> END 不能播放广告 场景检测通过,去加载广告"); LogUtil.d(TAG + ">>>播放广告<<< =============>>> END 不能播放广告 场景检测通过,去加载广告");
checkNeedLoadAd(actionFrom); preloadByData(actionFrom, adData);
} else { } else {
LogUtil.d(TAG + ">>>播放广告<<< =============>>> END 不能播放广告 场景检测不通过,不能加载广告"); LogUtil.d(TAG + ">>>播放广告<<< =============>>> END 不能播放广告 场景检测不通过,不能加载广告");
returnFailCallBack("scene check fail"); returnFailCallBack("scene check fail");
......
...@@ -119,22 +119,12 @@ public class DxActivity extends BaseActivity { ...@@ -119,22 +119,12 @@ public class DxActivity extends BaseActivity {
} }
public void close() { public void close() {
if (IconHelp.get().isIconHide()) {
LogUtil.d(TAG + "icon隐藏 退回到后台");
if (proxyView != null) {
proxyView.onDestroy();
proxyView = null;
}
activity.moveTaskToBack(true);
} else {
LogUtil.d(TAG + "icon未隐藏 finish");
if (proxyView != null) { if (proxyView != null) {
proxyView.onDestroy(); proxyView.onDestroy();
proxyView = null; proxyView = null;
} }
activity.finish(); activity.finish();
} }
}
public void finishAndRemoveTask() { public void finishAndRemoveTask() {
activity.finishAndRemoveTask(); activity.finishAndRemoveTask();
......
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