Commit 7e2bf843 authored by shenpc's avatar shenpc

优化代码

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