未验证 提交 43fdb08e 编写于 作者: 金台 提交者: GitHub

Merge pull request #812 from WizzXu/master

Android : 1.添加cpu,内存,FPS回调  2.添加网络扩展拦截器,可以自定义拦截器操作
......@@ -14,10 +14,14 @@ import com.didichuxing.doraemondemo.dokit.TestSimpleDokitFragmentKit
import com.didichuxing.doraemonkit.DoKit
import com.didichuxing.doraemonkit.kit.AbstractKit
import com.didichuxing.doraemonkit.kit.core.MCInterceptor
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitExtInterceptor
import com.didichuxing.doraemonkit.kit.performance.PerformanceValueListener
import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.imagepipeline.core.ImagePipelineConfig
import com.lzy.okgo.OkGo
import okhttp3.Interceptor
import okhttp3.OkHttpClient
import okhttp3.Response
/**
* @author jint
......@@ -36,7 +40,6 @@ class App : Application() {
//是否显示入口icon
// DoraemonKit.setAwaysShowMainIcon(false);
val kits: MutableList<AbstractKit> = ArrayList()
kits.add(DemoKit())
kits.add(TestSimpleDokitFloatViewKit())
......@@ -106,6 +109,24 @@ class App : Application() {
return false
}
})
.setNetExtInterceptor(object : DokitExtInterceptor.DokitExtInterceptorProxy{
override fun intercept(chain: Interceptor.Chain): Response {
//LogUtils.e(DokitExtInterceptor.TAG, chain.request().url().toString())
return chain.proceed(chain.request())
}
})
.setPerformanceValueListener(object : PerformanceValueListener{
override fun onGetMemory(value: Float) {
}
override fun onGetCPU(value: Float) {
}
override fun onGetFPS(value: Float) {
}
})
.build()
......
......@@ -3,6 +3,8 @@ package com.didichuxing.doraemonkit
import android.app.Application
import com.didichuxing.doraemonkit.kit.AbstractKit
import com.didichuxing.doraemonkit.kit.core.MCInterceptor
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitExtInterceptor
import com.didichuxing.doraemonkit.kit.performance.PerformanceValueListener
import com.didichuxing.doraemonkit.kit.webdoor.WebDoorManager
import java.lang.NullPointerException
......@@ -131,6 +133,20 @@ public class DoKit {
return this
}
/**
* 设置扩展网络拦截器的代理对象
*/
fun setNetExtInterceptor(extInterceptorProxy: DokitExtInterceptor.DokitExtInterceptorProxy): Builder {
return this
}
/**
* 设置CPU、内存、FPS每次采集后的回调
*/
fun setPerformanceValueListener(performanceValueListener: PerformanceValueListener): Builder {
return this
}
fun build() {
}
}
......
......@@ -3,6 +3,8 @@ package com.didichuxing.doraemonkit
import android.app.Application
import com.didichuxing.doraemonkit.kit.AbstractKit
import com.didichuxing.doraemonkit.kit.core.MCInterceptor
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitExtInterceptor
import com.didichuxing.doraemonkit.kit.performance.PerformanceValueListener
import com.didichuxing.doraemonkit.kit.webdoor.WebDoorManager
/**
......@@ -109,4 +111,18 @@ object DoraemonKit {
@JvmStatic
fun setMCIntercept(interceptor: MCInterceptor) {
}
/**
* 设置扩展网络拦截器的代理对象
*/
@JvmStatic
fun setNetExtInterceptor(extInterceptorProxy: DokitExtInterceptor.DokitExtInterceptorProxy){
}
/**
* 设置CPU、内存、FPS每次采集后的回调
*/
@JvmStatic
fun setPerformanceValueListener(performanceValueListener: PerformanceValueListener){
}
}
\ No newline at end of file
package com.didichuxing.doraemonkit.kit.network.okhttp.interceptor
import okhttp3.Interceptor
import okhttp3.Response
import java.io.IOException
/**
* Author: xuweiyu
* Date: 5/11/21
* Email: wizz.xu@outlook.com
* Description: Dokit 扩展网络拦截器
*/
class DokitExtInterceptor : Interceptor {
@Throws(IOException::class)
override fun intercept(chain: Interceptor.Chain): Response {
return chain.proceed(chain.request())
}
interface DokitExtInterceptorProxy {
fun intercept(chain: Interceptor.Chain): Response
}
companion object {
const val TAG = "DokitExtInterceptor"
var dokitExtInterceptorProxy: DokitExtInterceptorProxy? = null
}
}
\ No newline at end of file
package com.didichuxing.doraemonkit.kit.performance
/**
* Author: xuweiyu
* Date: 5/12/21
* Email: wizz.xu@outlook.com
* Description: cpu 内存 FPS 的回调监听
*/
interface PerformanceValueListener {
fun onGetMemory(value: Float)
fun onGetCPU(value: Float)
fun onGetFPS(value: Float)
}
\ No newline at end of file
......@@ -3,8 +3,9 @@ package com.didichuxing.doraemonkit
import android.app.Application
import com.didichuxing.doraemonkit.kit.AbstractKit
import com.didichuxing.doraemonkit.kit.core.MCInterceptor
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitExtInterceptor
import com.didichuxing.doraemonkit.kit.performance.PerformanceValueListener
import com.didichuxing.doraemonkit.kit.webdoor.WebDoorManager
import java.lang.NullPointerException
/**
* ================================================
......@@ -153,6 +154,23 @@ public class DoKit {
return this
}
/**
* 设置扩展网络拦截器的代理对象
*/
fun setNetExtInterceptor(extInterceptorProxy: DokitExtInterceptor.DokitExtInterceptorProxy): Builder {
DoKitReal.setNetExtInterceptor(extInterceptorProxy)
return this
}
/**
* 设置CPU、内存、FPS每次采集后的回调
*/
fun setPerformanceValueListener(performanceValueListener: PerformanceValueListener): Builder {
DoKitReal.setPerformanceValueListener(performanceValueListener)
return this
}
fun build() {
DoKitReal.install(app, mapKits, listKits, productId)
}
......
......@@ -17,6 +17,9 @@ import com.didichuxing.doraemonkit.kit.gpsmock.ServiceHookManager
import com.didichuxing.doraemonkit.kit.health.AppHealthInfoUtil
import com.didichuxing.doraemonkit.kit.health.model.AppHealthInfo.DataBean.BigFileBean
import com.didichuxing.doraemonkit.kit.network.NetworkManager
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitExtInterceptor
import com.didichuxing.doraemonkit.kit.performance.PerformanceDataManager
import com.didichuxing.doraemonkit.kit.performance.PerformanceValueListener
import com.didichuxing.doraemonkit.kit.timecounter.instrumentation.HandlerHooker
import com.didichuxing.doraemonkit.kit.toolpanel.KitWrapItem
import com.didichuxing.doraemonkit.kit.toolpanel.ToolPanelUtil
......@@ -503,4 +506,18 @@ object DoKitReal {
DoKitConstant.MC_INTERCEPT = interceptor
}
/**
* 设置扩展网络拦截器的代理对象
*/
fun setNetExtInterceptor(extInterceptorProxy: DokitExtInterceptor.DokitExtInterceptorProxy){
DokitExtInterceptor.dokitExtInterceptorProxy = extInterceptorProxy
}
/**
* 设置CPU、内存、FPS每次采集后的回调
*/
fun setPerformanceValueListener(performanceValueListener: PerformanceValueListener) {
PerformanceDataManager.getInstance().setPerformanceValueListener(performanceValueListener)
}
}
\ No newline at end of file
package com.didichuxing.doraemonkit
import android.app.Application
import android.util.Log
import com.didichuxing.doraemonkit.kit.AbstractKit
import com.didichuxing.doraemonkit.kit.core.MCInterceptor
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitExtInterceptor
import com.didichuxing.doraemonkit.kit.performance.PerformanceValueListener
import com.didichuxing.doraemonkit.kit.webdoor.WebDoorManager.WebDoorCallback
/**
......@@ -159,5 +160,21 @@ object DoraemonKit {
DoKitReal.setMCWSPort(port)
}
/**
* 设置扩展网络拦截器的代理对象
*/
@JvmStatic
fun setNetExtInterceptor(extInterceptorProxy: DokitExtInterceptor.DokitExtInterceptorProxy){
DoKitReal.setNetExtInterceptor(extInterceptorProxy)
}
/**
* 设置CPU、内存、FPS每次采集后的回调
*/
@JvmStatic
fun setPerformanceValueListener(performanceValueListener: PerformanceValueListener){
DoKitReal.setPerformanceValueListener(performanceValueListener)
}
}
\ No newline at end of file
package com.didichuxing.doraemonkit.aop;
import android.util.Log;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.AbsDoKitInterceptor;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitCapInterceptor;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitWeakNetworkInterceptor;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitExtInterceptor;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitLargePicInterceptor;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitMockInterceptor;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitWeakNetworkInterceptor;
import com.didichuxing.doraemonkit.util.ReflectUtils;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import okhttp3.Interceptor;
......@@ -52,6 +49,7 @@ public class OkHttpHook {
interceptors.add(new DokitMockInterceptor());
interceptors.add(new DokitLargePicInterceptor());
interceptors.add(new DokitCapInterceptor());
interceptors.add(new DokitExtInterceptor());
networkInterceptors.add(new DokitWeakNetworkInterceptor());
//需要用反射重新赋值 因为源码中创建了一个不可变的list
ReflectUtils.reflect(client).field("interceptors", interceptors);
......
......@@ -3,6 +3,7 @@ package com.didichuxing.doraemonkit.aop.urlconnection;
import android.net.Uri;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitCapInterceptor;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitExtInterceptor;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitWeakNetworkInterceptor;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitLargePicInterceptor;
import com.didichuxing.doraemonkit.kit.network.okhttp.interceptor.DokitMockInterceptor;
......@@ -94,7 +95,9 @@ public class HttpUrlConnectionProxyUtil {
//添加dokit拦截器
.addInterceptor(new DokitCapInterceptor())
//添加弱网 拦截器
.addNetworkInterceptor(new DokitWeakNetworkInterceptor());
.addNetworkInterceptor(new DokitWeakNetworkInterceptor())
// 添加扩展拦截器
.addInterceptor(new DokitExtInterceptor());
}
/**
......
package com.didichuxing.doraemonkit.kit.network.okhttp.interceptor
import okhttp3.Interceptor
import okhttp3.Response
import java.io.IOException
/**
* Author: xuweiyu
* Date: 5/11/21
* Email: wizz.xu@outlook.com
* Description: Dokit 扩展网络拦截器
*/
class DokitExtInterceptor : AbsDoKitInterceptor() {
@Throws(IOException::class)
override fun intercept(chain: Interceptor.Chain): Response {
return dokitExtInterceptorProxy?.intercept(chain) ?: chain.proceed(chain.request())
}
interface DokitExtInterceptorProxy {
fun intercept(chain: Interceptor.Chain): Response
}
companion object {
const val TAG = "DokitExtInterceptor"
var dokitExtInterceptorProxy: DokitExtInterceptorProxy? = null
}
}
\ No newline at end of file
......@@ -57,6 +57,10 @@ public class PerformanceDataManager {
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 外部可以设置cpu 内存 fps的监听回调
*/
private PerformanceValueListener performanceValueListener = null;
//private int mLastSkippedFrames;
/**
......@@ -98,11 +102,13 @@ public class PerformanceDataManager {
private void executeCpuData() {
if (mAboveAndroidO) {
mLastCpuRate = getCpuDataForO();
writeCpuDataIntoFile();
} else {
mLastCpuRate = getCPUData();
writeCpuDataIntoFile();
}
if (performanceValueListener != null){
performanceValueListener.onGetCPU(mLastCpuRate);
}
writeCpuDataIntoFile();
}
/**
......@@ -110,6 +116,9 @@ public class PerformanceDataManager {
*/
private void executeMemoryData() {
mLastMemoryRate = getMemoryData();
if (performanceValueListener != null){
performanceValueListener.onGetMemory(mLastMemoryRate);
}
writeMemoryDataIntoFile();
}
......@@ -495,6 +504,9 @@ public class PerformanceDataManager {
}
//保存fps数据
if (AppUtils.isAppForeground()) {
if (performanceValueListener != null){
performanceValueListener.onGetFPS(mLastFrameRate);
}
writeFpsDataIntoFile();
}
totalFramesPerSecond = 0;
......@@ -601,5 +613,8 @@ public class PerformanceDataManager {
}
public void setPerformanceValueListener(PerformanceValueListener performanceValueListener) {
this.performanceValueListener = performanceValueListener;
}
}
package com.didichuxing.doraemonkit.kit.performance
/**
* Author: xuweiyu
* Date: 5/12/21
* Email: wizz.xu@outlook.com
* Description: cpu 内存 FPS 的回调监听
*/
interface PerformanceValueListener {
fun onGetMemory(value: Float)
fun onGetCPU(value: Float)
fun onGetFPS(value: Float)
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册