QAPM 源码
ackage com.tencent.qapmsdk;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.NonNull;
import com.tencent.qapmsdk.battery.BatteryStatsImpl;
import com.tencent.qapmsdk.common.DeviceInfo;
import com.tencent.qapmsdk.common.ILogUtil;
import com.tencent.qapmsdk.common.PhoneUtil;
import com.tencent.qapmsdk.common.ThreadManager;
import com.tencent.qapmsdk.config.Config;
import com.tencent.qapmsdk.dropframe.DropResultObject;
import com.tencent.qapmsdk.sample.DumpSampleFileRunnable;
import java.lang.ref.WeakReference;
import java.text.DecimalFormat;
import java.util.HashMap;
class SDKLifecycleCallback implements Application.ActivityLifecycleCallbacks {
static WeakReference<Activity> sWeakActivity;
static String sActivityName = "";
private int foregroundCount = 0;
private int bufferCount = 0;
@NonNull
private String TAG = "QAPM_SDKLifecycleCallback";
private long last_time = 0L;
private long cur_time = 0L;
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {}
public void onActivityDestroyed(Activity activity) {}
public void onActivityPaused(Activity activity) {}
public void onActivityResumed(Activity activity) {
sWeakActivity = new WeakReference<>(activity);
sActivityName = new String(((Activity)sWeakActivity.get()).getClass().getSimpleName());
}
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {}
public void onActivityStarted(Activity activity) {
if (this.foregroundCount <= 0)
BatteryStatsImpl.getInstance().onAppForeground();
if (this.bufferCount < 0) {
this.bufferCount++;
} else {
this.foregroundCount++;
}
}
public void onActivityStopped(@NonNull Activity activity) {
if (activity.isChangingConfigurations()) {
this.bufferCount--;
} else {
this.foregroundCount--;
if (this.foregroundCount <= 0) {
Magnifier.ILOGUTIL.i(new String[] { this.TAG, "App back ground" });
BatteryStatsImpl.getInstance().onAppBackground();
DeviceInfo.setContext(activity.getApplicationContext());
Handler handler = new Handler(ThreadManager.getReporterThreadLooper());
handler.post(new Runnable() {
public void run() {
DeviceInfo.reportDevice();
}
});
Handler h = new Handler(ThreadManager.getMonitorThreadLooper());
DumpSampleFileRunnable dumpSampleFileRunnable = DumpSampleFileRunnable.getInstance();
dumpSampleFileRunnable.setCanReport(true);
h.post((Runnable)dumpSampleFileRunnable);
if (ILogUtil.debug && (Config.STARTED_FUNC & 0x80) > 0) {
this.cur_time = System.currentTimeMillis();
h.post(new Runnable() {
public void run() {
HashMap<String, DropResultObject> dropFrame = Magnifier.dbHandler.getDropFrame(PhoneUtil.getProcessName((Context)Magnifier.sApp), Magnifier.productId, Magnifier.info.version, SDKLifecycleCallback.this.last_time, SDKLifecycleCallback.this.cur_time);
for (String scene : dropFrame.keySet()) {
DropResultObject value = dropFrame.get(scene);
double silkyTime = 16.7D * value.dropIntervals[0] + 25.049999999999997D * value.dropIntervals[1] + 50.099999999999994D * value.dropIntervals[2] + 100.19999999999999D * value.dropIntervals[3];
double dropFrameRate = silkyTime / value.duration * 1000000.0D * 100.0D;
Magnifier.ILOGUTIL.d(new String[] { SDKLifecycleCallback.access$200(this.this$0), "scene:" + scene + " smooth rate:" + String.valueOf((new DecimalFormat("0.00")).format(dropFrameRate)) + "%" });
}
SDKLifecycleCallback.this.last_time = SDKLifecycleCallback.this.cur_time;
}
});
}
}
}
}
}
网友评论