提交 359cc726 编写于 作者: A alvince

Feat: [Android] fits entry classes code style in Kotlin

上级 ec6c9b99
# http://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
[*.java]
max_line_length = 140
wildcard_import_limit = 99
[*.kt]
max_line_length = 160
wildcard_import_limit = 99
......@@ -2,7 +2,7 @@ package com.didichuxing.doraemonkit.weex.log
import android.app.Activity
import android.content.Context
import com.didichuxing.doraemonkit.DoKit.Companion.launchFloating
import com.didichuxing.doraemonkit.DoKit
import com.didichuxing.doraemonkit.kit.AbstractKit
import com.didichuxing.doraemonkit.kit.loginfo.LogInfoManager
import com.didichuxing.doraemonkit.weex.R
......@@ -20,7 +20,7 @@ class WeexLogKit : AbstractKit() {
get() = R.mipmap.dk_log_info
override fun onClickWithReturn(activity: Activity): Boolean {
launchFloating(WeexLogInfoDokitView::class.java)
DoKit.launchFloating<WeexLogInfoDokitView>()
//开启日志服务
LogInfoManager.getInstance().start()
......@@ -34,4 +34,4 @@ class WeexLogKit : AbstractKit() {
override fun innerKitId(): String {
return "dokit_sdk_weex_ck_log"
}
}
\ No newline at end of file
}
......@@ -21,192 +21,171 @@ import kotlin.reflect.KClass
* 修订历史:
* ================================================
*/
public class DoKit private constructor() {
companion object {
const val TAG = "DoKit"
lateinit var APPLICATION: Application
/**
* 主icon是否处于显示状态
*/
@JvmStatic
val isMainIconShow: Boolean
get() = DoKitReal.isShow
/**
* 是否已完成初始化
*/
@JvmStatic
val isInit: Boolean
get() = DoKitReal.isInit
/**
* 显示主icon
*/
@JvmStatic
fun show() {
DoKitReal.show()
}
/**
* 直接显示工具面板页面
*/
@JvmStatic
fun showToolPanel() {
DoKitReal.showToolPanel()
}
/**
* 直接隐藏工具面板
*/
@JvmStatic
fun hideToolPanel() {
DoKitReal.hideToolPanel()
}
object DoKit {
const val TAG = "DoKit"
@Deprecated(
message = "Instead with DokitEnv.requireApp()",
replaceWith = ReplaceWith("DokitEnv.requireApp()", "com.didichuxing.doraemonkit.DokitEnv")
)
val APPLICATION: Application
get() = DoKitEnv.requireApp()
/**
* 主icon是否处于显示状态
*/
@JvmStatic
val isMainIconShow: Boolean
get() = DoKitReal.isShow
/**
* 是否已完成初始化
*/
@JvmStatic
val isInit: Boolean
get() = DoKitReal.isInit
/**
* 显示主icon
*/
@JvmStatic
fun show() {
DoKitReal.show()
}
/**
* 隐藏主icon
*/
@JvmStatic
fun hide() {
DoKitReal.hide()
}
/**
* 直接显示工具面板页面
*/
@JvmStatic
fun showToolPanel() {
DoKitReal.showToolPanel()
}
/**
* 启动悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
@JvmOverloads
fun launchFloating(
targetClass: Class<out AbsDokitView>,
mode: DoKitViewLaunchMode = DoKitViewLaunchMode.SINGLE_INSTANCE,
bundle: Bundle? = null
) {
DoKitReal.launchFloating(targetClass, mode, bundle)
}
/**
* 直接隐藏工具面板
*/
@JvmStatic
fun hideToolPanel() {
DoKitReal.hideToolPanel()
}
/**
* 隐藏主icon
*/
@JvmStatic
fun hide() {
DoKitReal.hide()
}
/**
* 启动悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
@JvmOverloads
fun launchFloating(
targetClass: KClass<out AbsDokitView>,
mode: DoKitViewLaunchMode = DoKitViewLaunchMode.SINGLE_INSTANCE,
bundle: Bundle? = null
) {
launchFloating(targetClass.java, mode, bundle)
}
/**
* 启动悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
@JvmOverloads
fun launchFloating(targetClass: Class<out AbsDokitView>, mode: DoKitViewLaunchMode = DoKitViewLaunchMode.SINGLE_INSTANCE, bundle: Bundle? = null) {
DoKitReal.launchFloating(targetClass, mode, bundle)
}
/**
* 移除悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
fun removeFloating(targetClass: Class<out AbsDokitView>) {
DoKitReal.removeFloating(targetClass)
}
/**
* 启动悬浮窗
*/
@Deprecated(
"Use launchFloating(DoKitViewLaunchMode, Bundle) directly",
ReplaceWith("Dokit.launchFloating(mode, bundle)")
)
fun launchFloating(targetClass: KClass<out AbsDokitView>, mode: DoKitViewLaunchMode = DoKitViewLaunchMode.SINGLE_INSTANCE, bundle: Bundle? = null) {
launchFloating(targetClass.java, mode, bundle)
}
/**
* 移除悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
fun removeFloating(targetClass: KClass<out AbsDokitView>) {
removeFloating(targetClass.java)
}
/**
* 启动悬浮窗
*/
inline fun <reified T : AbsDokitView> launchFloating(mode: DoKitViewLaunchMode = DoKitViewLaunchMode.SINGLE_INSTANCE, bundle: Bundle? = null) {
DoKitReal.launchFloating(T::class.java, mode, bundle)
}
/**
* 移除悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
fun removeFloating(dokitView: AbsDokitView) {
DoKitReal.removeFloating(dokitView)
}
/**
* 移除悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
fun removeFloating(targetClass: Class<out AbsDokitView>) {
DoKitReal.removeFloating(targetClass)
}
/**
* 移除悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@Deprecated("Use removeFloating(Class) directly", ReplaceWith("Dokit.removeFloating(class)"))
fun removeFloating(targetClass: KClass<out AbsDokitView>) {
removeFloating(targetClass.java)
}
/**
* 启动全屏页面
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
@JvmOverloads
fun launchFullScreen(
targetClass: Class<out BaseFragment>,
context: Context? = null,
bundle: Bundle? = null,
isSystemFragment: Boolean = false
) {
DoKitReal.launchFullScreen(targetClass, context, bundle, isSystemFragment)
}
/**
* 移除悬浮窗
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
fun removeFloating(dokitView: AbsDokitView) {
DoKitReal.removeFloating(dokitView)
}
/**
* 启动全屏页面
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
@JvmOverloads
fun launchFullScreen(
targetClass: KClass<out BaseFragment>,
context: Context? = null,
bundle: Bundle? = null,
isSystemFragment: Boolean = false
) {
launchFullScreen(targetClass.java, context, bundle, isSystemFragment)
}
/**
* 启动全屏页面
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@JvmStatic
@JvmOverloads
fun launchFullScreen(targetClass: Class<out BaseFragment>, context: Context? = null, bundle: Bundle? = null, isSystemFragment: Boolean = false) {
DoKitReal.launchFullScreen(targetClass, context, bundle, isSystemFragment)
}
/**
* 启动全屏页面
* @JvmStatic:允许使用java的静态方法的方式调用
* @JvmOverloads :在有默认参数值的方法中使用@JvmOverloads注解,则Kotlin就会暴露多个重载方法。
*/
@Deprecated(
"Use launchFullScreen(Class, Context, Bundle, Boolean) directly",
ReplaceWith("Dokit.launchFullScreen(class, context, bundle, isSystemFragment)")
)
fun launchFullScreen(targetClass: KClass<out BaseFragment>, context: Context? = null, bundle: Bundle? = null, isSystemFragment: Boolean = false) {
launchFullScreen(targetClass.java, context, bundle, isSystemFragment)
}
@JvmStatic
fun <T : AbsDokitView> getDoKitView(
activity: Activity?,
clazz: Class<out T>
): T? {
return DoKitReal.getDoKitView<T>(activity, clazz)
}
@JvmStatic
fun <T : AbsDokitView> getDoKitView(activity: Activity?, clazz: Class<out T>): T? {
return DoKitReal.getDoKitView<T>(activity, clazz)
}
@JvmStatic
fun <T : AbsDokitView> getDoKitView(
activity: Activity?,
clazz: KClass<out T>
): T? {
return getDoKitView(activity, clazz.java)
}
@Deprecated("Use getDoKitView(activity) directly", ReplaceWith("DoKit.getDoKitView(activity)"))
fun <T : AbsDokitView> getDoKitView(activity: Activity?, clazz: KClass<out T>): T? {
return getDoKitView(activity, clazz.java)
}
/**
* 发送自定义一机多控事件
*/
@JvmStatic
fun sendCustomEvent(
eventType: String,
view: View? = null,
param: Map<String, String>? = null
) {
DoKitReal.sendCustomEvent(eventType, view, param)
}
inline fun <reified T : AbsDokitView> getDoKitView(activity: Activity): T? = DoKitReal.getDoKitView(activity, T::class.java)
/**
* 获取一机多控类型
*/
@JvmStatic
fun mcMode(): WSMode {
return DoKitManager.WS_MODE
}
/**
* 发送自定义一机多控事件
*/
@JvmStatic
fun sendCustomEvent(eventType: String, view: View? = null, param: Map<String, String>? = null) {
DoKitReal.sendCustomEvent(eventType, view, param)
}
/**
* 获取一机多控类型
*/
@JvmStatic
fun mcMode(): WSMode = DoKitManager.WS_MODE
class Builder(private val app: Application) {
private var productId: String = ""
......@@ -214,111 +193,90 @@ public class DoKit private constructor() {
private var listKits: List<AbstractKit> = arrayListOf()
init {
APPLICATION = app
DoKitEnv.app = app
}
fun productId(productId: String): Builder {
this.productId = productId
return this
}
fun productId(productId: String): Builder = apply { this.productId = productId }
/**
* mapKits & listKits 二选一
*/
fun customKits(mapKits: LinkedHashMap<String, List<AbstractKit>>): Builder {
this.mapKits = mapKits
return this
}
fun customKits(mapKits: LinkedHashMap<String, List<AbstractKit>>): Builder = apply { this.mapKits = mapKits }
/**
* mapKits & listKits 二选一
*/
fun customKits(listKits: List<AbstractKit>): Builder {
this.listKits = listKits
return this
}
fun customKits(listKits: List<AbstractKit>): Builder = apply { this.listKits = listKits }
/**
* H5任意门全局回调
*/
fun webDoorCallback(callback: WebDoorManager.WebDoorCallback): Builder {
fun webDoorCallback(callback: WebDoorManager.WebDoorCallback): Builder = this.apply {
DoKitReal.setWebDoorCallback(callback)
return this
}
/**
* 禁用app信息上传开关,该上传信息只为做DoKit接入量的统计,如果用户需要保护app隐私,可调用该方法进行禁用
*/
fun disableUpload(): Builder {
fun disableUpload(): Builder = this.apply {
DoKitReal.disableUpload()
return this
}
fun debug(debug: Boolean): Builder {
fun debug(debug: Boolean): Builder = this.apply {
DoKitReal.setDebug(debug)
return this
}
/**
* 是否显示主入口icon
*/
fun alwaysShowMainIcon(alwaysShow: Boolean): Builder {
fun alwaysShowMainIcon(alwaysShow: Boolean): Builder = this.apply {
DoKitReal.setAlwaysShowMainIcon(alwaysShow)
return this
}
/**
* 设置加密数据库密码
*/
fun databasePass(map: Map<String, String>): Builder {
fun databasePass(map: Map<String, String>): Builder = this.apply {
DoKitReal.setDatabasePass(map)
return this
}
/**
* 设置文件管理助手http端口号
*/
fun fileManagerHttpPort(port: Int): Builder {
fun fileManagerHttpPort(port: Int): Builder = this.apply {
DoKitReal.setFileManagerHttpPort(port)
return this
}
/**
* 一机多控端口号
*/
fun mcWSPort(port: Int): Builder {
fun mcWSPort(port: Int): Builder = this.apply {
DoKitReal.setMCWSPort(port)
return this
}
/**
* 一机多控自定义拦截器
*/
fun mcClientProcess(interceptor: McClientProcessor): Builder {
fun mcClientProcess(interceptor: McClientProcessor): Builder = this.apply {
DoKitReal.setMCIntercept(interceptor)
return this
}
/**
*设置dokit的性能监控全局回调
*/
fun callBack(callback: DoKitCallBack): Builder {
fun callBack(callback: DoKitCallBack): Builder = this.apply {
DoKitReal.setCallBack(callback)
return this
}
/**
* 设置扩展网络拦截器的代理对象
*/
fun netExtInterceptor(extInterceptorProxy: DokitExtInterceptor.DokitExtInterceptorProxy): Builder {
fun netExtInterceptor(extInterceptorProxy: DokitExtInterceptor.DokitExtInterceptorProxy): Builder = this.apply {
DoKitReal.setNetExtInterceptor(extInterceptorProxy)
return this
}
fun build() {
DoKitReal.install(app, mapKits, listKits, productId)
}
}
}
\ No newline at end of file
}
package com.didichuxing.doraemonkit
import android.app.Application
/**
* Created by alvince on 2021/9/29
*
* @author alvince.zy@gmail.com
*/
internal object DoKitEnv {
@Volatile
var app: Application? = null
@JvmStatic
fun requireApp(): Application {
return app ?: throw IllegalStateException("Dokit app no set")
}
}
......@@ -150,7 +150,7 @@ object DoKitReal {
//addSystemKitForTest(app)
//初始化悬浮窗管理类
DokitViewManager.instance.init()
DokitViewManager.INSTANCE.init()
//上传app基本信息便于统计
if (DoKitManager.ENABLE_UPLOAD) {
try {
......@@ -425,7 +425,7 @@ object DoKitReal {
* 显示系统悬浮窗icon
*/
private fun showMainIcon() {
DokitViewManager.instance.attachMainIcon(ActivityUtils.getTopActivity())
DokitViewManager.INSTANCE.attachMainIcon(ActivityUtils.getTopActivity())
}
fun show() {
......@@ -439,17 +439,17 @@ object DoKitReal {
* 直接显示工具面板页面
*/
fun showToolPanel() {
DokitViewManager.instance.attachToolPanel(ActivityUtils.getTopActivity())
DokitViewManager.INSTANCE.attachToolPanel(ActivityUtils.getTopActivity())
}
fun hideToolPanel() {
DokitViewManager.instance.detachToolPanel()
DokitViewManager.INSTANCE.detachToolPanel()
}
fun hide() {
DoKitManager.MAIN_ICON_HAS_SHOW = false
DoKitManager.ALWAYS_SHOW_MAIN_ICON = false
DokitViewManager.instance.detachMainIcon()
DokitViewManager.INSTANCE.detachMainIcon()
}
fun sendCustomEvent(eventType: String, view: View? = null, param: Map<String, String>? = null) {
......@@ -575,12 +575,10 @@ object DoKitReal {
activity: Activity?,
clazz: Class<out T>
): T? {
return if (DokitViewManager.instance.getDoKitView(activity, clazz) == null) {
return if (DokitViewManager.INSTANCE.getDoKitView(activity, clazz) == null) {
null
} else {
DokitViewManager.instance.getDoKitView(activity, clazz) as T
DokitViewManager.INSTANCE.getDoKitView(activity, clazz) as T
}
}
}
\ No newline at end of file
}
......@@ -66,7 +66,7 @@ class DokitActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks {
return
}
if (startedActivityCounts == 0) {
DokitViewManager.instance.notifyForeground()
DokitViewManager.INSTANCE.notifyForeground()
}
startedActivityCounts++
} catch (e: Exception) {
......@@ -106,7 +106,7 @@ class DokitActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks {
for (listener in LifecycleListenerUtil.LIFECYCLE_LISTENERS) {
listener.onActivityPaused(activity)
}
DokitViewManager.instance.onActivityPaused(activity)
DokitViewManager.INSTANCE.onActivityPaused(activity)
} catch (e: Exception) {
e.printStackTrace()
}
......@@ -121,11 +121,11 @@ class DokitActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks {
startedActivityCounts--
//通知app退出到后台
if (startedActivityCounts == 0) {
DokitViewManager.instance.notifyBackground()
DokitViewManager.INSTANCE.notifyBackground()
//app 切换到后台 上传埋点数据
DataPickManager.getInstance().postData()
}
DokitViewManager.instance.onActivityStopped(activity)
DokitViewManager.INSTANCE.onActivityStopped(activity)
} catch (e: Exception) {
e.printStackTrace()
}
......@@ -153,7 +153,7 @@ class DokitActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks {
sFragmentLifecycleCallbacks
)
}
DokitViewManager.instance.onActivityDestroyed(activity)
DokitViewManager.INSTANCE.onActivityDestroyed(activity)
//暂时无法很好的解决屏幕旋转的问题
//DoKitOrientationEventListener orientationEventListener = mOrientationEventListeners.get(activity.getClass().getSimpleName());
......@@ -175,11 +175,11 @@ class DokitActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks {
private fun dispatchOnActivityResumed(activity: Activity) {
if (DoKitManager.IS_NORMAL_FLOAT_MODE) {
//显示内置dokitView icon
DokitViewManager.instance.dispatchOnActivityResumed(activity)
DokitViewManager.INSTANCE.dispatchOnActivityResumed(activity)
} else {
//悬浮窗权限 vivo 华为可以不需要动态权限 小米需要
if (DoKitPermissionUtil.canDrawOverlays(activity)) {
DokitViewManager.instance.dispatchOnActivityResumed(activity)
DokitViewManager.INSTANCE.dispatchOnActivityResumed(activity)
} else {
//请求悬浮窗权限
requestPermission(activity)
......@@ -315,4 +315,4 @@ class DokitActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks {
init {
sFragmentLifecycleCallbacks = DokitFragmentLifecycleCallbacks()
}
}
\ No newline at end of file
}
......@@ -65,7 +65,7 @@ object DoraemonKit {
productId: String? = ""
) {
APPLICATION = app
DoKit.APPLICATION = app
DoKitEnv.app = app
try {
DoKitReal.install(
app, mapKits ?: linkedMapOf(), listKits
......@@ -176,4 +176,4 @@ object DoraemonKit {
}
}
\ No newline at end of file
}
......@@ -2,8 +2,7 @@ package com.didichuxing.doraemonkit.kit.alignruler
import android.app.Activity
import android.content.Context
import com.didichuxing.doraemonkit.DoKit.Companion.getDoKitView
import com.didichuxing.doraemonkit.DoKit.Companion.launchFloating
import com.didichuxing.doraemonkit.DoKit
import com.didichuxing.doraemonkit.R
import com.didichuxing.doraemonkit.config.AlignRulerConfig
import com.didichuxing.doraemonkit.kit.AbstractKit
......@@ -21,16 +20,15 @@ class AlignRulerKit : AbstractKit() {
get() = R.mipmap.dk_align_ruler
override fun onClickWithReturn(activity: Activity): Boolean {
launchFloating(AlignRulerMarkerDokitView::class.java)
launchFloating(AlignRulerLineDokitView::class.java)
launchFloating(AlignRulerInfoDokitView::class.java)
val alignRulerInfoDokitView =
getDoKitView(ActivityUtils.getTopActivity(), AlignRulerInfoDokitView::class.java)!!
alignRulerInfoDokitView.setCheckBoxListener { isChecked ->
val alignRulerLineDokitView =
getDoKitView(ActivityUtils.getTopActivity(), AlignRulerLineDokitView::class.java)!!
alignRulerLineDokitView.alignInfoView.refreshInfo(isChecked)
}
DoKit.launchFloating<AlignRulerMarkerDokitView>()
DoKit.launchFloating<AlignRulerLineDokitView>()
DoKit.launchFloating<AlignRulerInfoDokitView>()
DoKit.getDoKitView<AlignRulerInfoDokitView>(ActivityUtils.getTopActivity())
?.setCheckBoxListener { isChecked ->
DoKit.getDoKitView<AlignRulerLineDokitView>(ActivityUtils.getTopActivity())
?.alignInfoView
?.refreshInfo(isChecked)
}
AlignRulerConfig.setAlignRulerOpen(true)
return true
}
......@@ -42,7 +40,5 @@ class AlignRulerKit : AbstractKit() {
override val isInnerKit: Boolean
get() = true
override fun innerKitId(): String {
return "dokit_sdk_ui_ck_aligin_scaleplate"
}
}
\ No newline at end of file
override fun innerKitId(): String = "dokit_sdk_ui_ck_aligin_scaleplate"
}
package com.didichuxing.doraemonkit.kit.blockmonitor.core;
import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
......@@ -9,13 +11,13 @@ import android.text.TextUtils;
import androidx.annotation.NonNull;
import com.didichuxing.doraemonkit.DoKit;
import com.didichuxing.doraemonkit.DoKitEnv;
import com.didichuxing.doraemonkit.R;
import com.didichuxing.doraemonkit.constant.BundleKey;
import com.didichuxing.doraemonkit.kit.core.DoKitManager;
import com.didichuxing.doraemonkit.constant.FragmentIndex;
import com.didichuxing.doraemonkit.kit.blockmonitor.BlockMonitorFragment;
import com.didichuxing.doraemonkit.kit.blockmonitor.bean.BlockInfo;
import com.didichuxing.doraemonkit.kit.core.DoKitManager;
import com.didichuxing.doraemonkit.kit.core.UniversalActivity;
import com.didichuxing.doraemonkit.kit.health.AppHealthInfoUtil;
import com.didichuxing.doraemonkit.kit.health.model.AppHealthInfo;
......@@ -28,8 +30,6 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
/**
* @desc: 卡顿检测管理类
*/
......@@ -65,7 +65,7 @@ public class BlockMonitorManager {
// 卡顿检测和跳转耗时统计都使用了Printer的方式,无法同时工作
TimeCounterManager.get().stop();
mContext = DoKit.APPLICATION.getApplicationContext();
mContext = DoKitEnv.requireApp().getApplicationContext();
if (mMonitorCore == null) {
mMonitorCore = new MonitorCore();
}
......
......@@ -18,7 +18,7 @@ import android.os.Bundle;
import androidx.annotation.RequiresApi;
import com.didichuxing.doraemonkit.DoKit;
import com.didichuxing.doraemonkit.DoKitEnv;
import com.didichuxing.doraemonkit.util.AppUtils;
import com.didichuxing.doraemonkit.util.LogHelper;
import com.didichuxing.doraemonkit.util.UIUtils;
......@@ -42,7 +42,7 @@ public class ImageCapture {
public void init(Context context, Bundle bundle, ColorPickerDokitView colorPickerDokitView) throws Exception {
this.mColorPickerDokitView = colorPickerDokitView;
PackageManager packageManager = DoKit.APPLICATION.getPackageManager();
PackageManager packageManager = DoKitEnv.requireApp().getPackageManager();
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(AppUtils.getAppPackageName(), 0);
//适配Android Q
if (applicationInfo.targetSdkVersion >= 29) {
......@@ -158,4 +158,4 @@ public class ImageCapture {
mBitmap = null;
}
}
}
\ No newline at end of file
}
......@@ -60,7 +60,7 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
var mTouchProxy = TouchProxy(this)
@JvmField
protected var mWindowManager = DokitViewManager.instance.windowManager
protected var mWindowManager = DokitViewManager.INSTANCE.windowManager
/**
* 创建FrameLayout#LayoutParams 内置悬浮窗调用
......@@ -129,12 +129,12 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
* 上一次DoKitview的位置信息
*/
private val mLastDokitViewPosInfo: LastDokitViewPosInfo by lazy {
if (DokitViewManager.instance.getLastDokitViewPosInfo(tag) == null) {
if (DokitViewManager.INSTANCE.getLastDokitViewPosInfo(tag) == null) {
val posInfo = LastDokitViewPosInfo()
DokitViewManager.instance.saveLastDokitViewPosInfo(tag, posInfo)
DokitViewManager.INSTANCE.saveLastDokitViewPosInfo(tag, posInfo)
posInfo
} else {
DokitViewManager.instance.getLastDokitViewPosInfo(tag)!!
DokitViewManager.INSTANCE.getLastDokitViewPosInfo(tag)!!
}
}
......@@ -173,7 +173,7 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
//调用onCreate方法
onCreate(context)
if (!isNormalMode) {
DokitViewManager.instance.addDokitViewAttachedListener(this)
DokitViewManager.INSTANCE.addDokitViewAttachedListener(this)
}
mRootView = if (isNormalMode) {
DokitFrameLayout(context, DokitFrameLayout.DoKitFrameLayoutFlag_CHILD)
......@@ -301,7 +301,7 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
normalLayoutParams?.width = mDokitViewLayoutParams.width
normalLayoutParams?.height = mDokitViewLayoutParams.height
normalLayoutParams?.gravity = mDokitViewLayoutParams.gravity
val doKitViewInfo = DokitViewManager.instance.getDoKitViewPos(tag)
val doKitViewInfo = DokitViewManager.INSTANCE.getDoKitViewPos(tag)
if (doKitViewInfo != null) {
//竖向
if (doKitViewInfo.orientation == Configuration.ORIENTATION_PORTRAIT) {
......@@ -322,7 +322,7 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
* 用于普通模式下的横竖屏切换
*/
private fun portraitOrLandscape() {
val doKitViewInfo = DokitViewManager.instance.getDoKitViewPos(tag)
val doKitViewInfo = DokitViewManager.INSTANCE.getDoKitViewPos(tag)
if (doKitViewInfo != null) {
//横竖屏切换兼容
if (ScreenUtils.isPortrait()) {
......@@ -390,7 +390,7 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
}
}
DokitViewManager.instance.saveDokitViewPos(
DokitViewManager.INSTANCE.saveDokitViewPos(
tag,
normalLayoutParams?.leftMargin ?: 0,
normalLayoutParams?.topMargin ?: 0
......@@ -411,7 +411,7 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
systemLayoutParams?.gravity = mDokitViewLayoutParams.gravity
systemLayoutParams?.width = mDokitViewLayoutParams.width
systemLayoutParams?.height = mDokitViewLayoutParams.height
val doKitViewInfo = DokitViewManager.instance.getDoKitViewPos(
val doKitViewInfo = DokitViewManager.INSTANCE.getDoKitViewPos(
tag
)
if (doKitViewInfo != null) {
......@@ -427,15 +427,15 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
systemLayoutParams?.y = mDokitViewLayoutParams.y
}
systemLayoutParams?.let {
DokitViewManager.instance.saveDokitViewPos(tag, it.x, it.y)
DokitViewManager.INSTANCE.saveDokitViewPos(tag, it.x, it.y)
}
}
override fun onDestroy() {
if (!isNormalMode) {
DokitViewManager.instance.removeDokitViewAttachedListener(this)
DokitViewManager.INSTANCE.removeDokitViewAttachedListener(this)
}
DokitViewManager.instance.removeLastDokitViewPosInfo(tag)
DokitViewManager.INSTANCE.removeLastDokitViewPosInfo(tag)
mAttachActivity = null
doKitViewScope.cancel()
}
......@@ -536,11 +536,11 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
//保存在内存中
if (isNormalMode) {
normalLayoutParams?.let {
DokitViewManager.instance.saveDokitViewPos(tag, it.leftMargin, it.topMargin)
DokitViewManager.INSTANCE.saveDokitViewPos(tag, it.leftMargin, it.topMargin)
}
} else {
systemLayoutParams?.let {
DokitViewManager.instance.saveDokitViewPos(tag, it.x, it.y)
DokitViewManager.INSTANCE.saveDokitViewPos(tag, it.x, it.y)
}
}
}
......@@ -673,7 +673,7 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
this.leftMargin = FloatIconConfig.getLastPosX()
this.topMargin = FloatIconConfig.getLastPosY()
} else {
val doKitViewInfo = DokitViewManager.instance.getDoKitViewPos(tag)
val doKitViewInfo = DokitViewManager.INSTANCE.getDoKitViewPos(tag)
if (doKitViewInfo != null) {
if (doKitViewInfo.orientation == Configuration.ORIENTATION_PORTRAIT) {
this.leftMargin = doKitViewInfo.portraitPoint.x
......@@ -852,4 +852,4 @@ abstract class AbsDokitView : DokitView, TouchProxy.OnTouchEventListener,
open fun immInvalidate() {
mRootView?.requestLayout()
}
}
\ No newline at end of file
}
......@@ -39,7 +39,6 @@ abstract class AbsDokitViewManager : DokitViewManagerInterface {
fun attachMcRecodingDoKitView(activity: Activity) {
val action: Map<String, String> = mapOf("action" to "launch_recoding_view")
DoKitManager.getModuleProcessor(DoKitModule.MODULE_MC)?.proceed(action)
}
/**
......@@ -62,7 +61,6 @@ abstract class AbsDokitViewManager : DokitViewManagerInterface {
*/
abstract fun detachToolPanel()
/**
* main activity 创建时回调
*
......@@ -83,4 +81,4 @@ abstract class AbsDokitViewManager : DokitViewManagerInterface {
* @param activity
*/
abstract fun onActivityBackResume(activity: Activity?)
}
\ No newline at end of file
}
......@@ -5,12 +5,12 @@ import android.content.Context
import android.content.res.Configuration
import android.graphics.Point
import android.view.WindowManager
import androidx.collection.ArrayMap
import androidx.room.Room
import com.didichuxing.doraemonkit.DoKit
import com.didichuxing.doraemonkit.DoKitEnv
import com.didichuxing.doraemonkit.kit.network.room_db.DokitDatabase
import com.didichuxing.doraemonkit.kit.network.room_db.DokitDbManager
import com.didichuxing.doraemonkit.util.ScreenUtils
import kotlin.reflect.KClass
/**
* Created by jintai on 2018/10/23.
......@@ -19,37 +19,35 @@ import kotlin.reflect.KClass
internal class DokitViewManager : DokitViewManagerInterface {
companion object {
@JvmStatic
val instance: DokitViewManager by lazy {
DokitViewManager()
}
private const val TAG = "DokitViewManagerProxy"
@JvmStatic
val INSTANCE: DokitViewManager by lazy { DokitViewManager() }
/**
* 每个类型在页面中的位置 只保存marginLeft 和marginTop
*/
private val mDoKitViewPos: MutableMap<String, DoKitViewInfo> by lazy {
mutableMapOf<String, DoKitViewInfo>()
}
private val doKitViewPos: MutableMap<String, DoKitViewInfo> = ArrayMap<String, DoKitViewInfo>()
}
private val mLastDoKitViewPosInfoMaps: MutableMap<String, LastDokitViewPosInfo> by lazy {
mutableMapOf<String, LastDokitViewPosInfo>()
}
private val mDoKitViewManager: AbsDokitViewManager by lazy {
if (DoKitManager.IS_NORMAL_FLOAT_MODE) {
NormalDoKitViewManager()
} else {
SystemDoKitViewManager()
}
}
/**
* Retrieves app [WindowManager]
*
* @return WindowManager
*/
val windowManager: WindowManager
get() = DoKitEnv.requireApp().getSystemService(Context.WINDOW_SERVICE) as WindowManager
private val lastDoKitViewPosInfoMaps: MutableMap<String, LastDokitViewPosInfo> = ArrayMap<String, LastDokitViewPosInfo>()
private var _doKitViewManager: AbsDokitViewManager? = null
//下面注释表示允许主线程进行数据库操作,但是不推荐这样做。
//他可能造成主线程lock以及anr
//所以我们的操作都是在新线程完成的
val db: DokitDatabase by lazy {
Room.databaseBuilder(
DoKit.APPLICATION,
DoKitEnv.requireApp(),
DokitDatabase::class.java,
"dokit-database"
) //下面注释表示允许主线程进行数据库操作,但是不推荐这样做。
......@@ -59,7 +57,6 @@ internal class DokitViewManager : DokitViewManagerInterface {
.build()
}
fun init() {
//获取所有的intercept apis
DokitDbManager.getInstance().getAllInterceptApis()
......@@ -68,19 +65,18 @@ internal class DokitViewManager : DokitViewManagerInterface {
DokitDbManager.getInstance().getAllTemplateApis()
}
/**
* 当app进入后台时调用
*/
override fun notifyBackground() {
mDoKitViewManager.notifyBackground()
ensureViewManager().notifyBackground()
}
/**
* 当app进入前台时调用
*/
override fun notifyForeground() {
mDoKitViewManager.notifyForeground()
ensureViewManager().notifyForeground()
}
/**
......@@ -101,19 +97,18 @@ internal class DokitViewManager : DokitViewManagerInterface {
landscapePoint.x = marginLeft
landscapePoint.y = marginTop
}
if (mDoKitViewPos[tag] == null) {
if (doKitViewPos[tag] == null) {
val doKitViewInfo = DoKitViewInfo(orientation, portraitPoint, landscapePoint)
mDoKitViewPos[tag] =
doKitViewPos[tag] =
doKitViewInfo
} else {
val doKitViewInfo = mDoKitViewPos[tag]
val doKitViewInfo = doKitViewPos[tag]
if (doKitViewInfo != null) {
doKitViewInfo.orientation = orientation
doKitViewInfo.portraitPoint = portraitPoint
doKitViewInfo.landscapePoint = landscapePoint
}
}
}
/**
......@@ -123,9 +118,7 @@ internal class DokitViewManager : DokitViewManagerInterface {
* @param tag
* @return
*/
fun getDoKitViewPos(tag: String): DoKitViewInfo? {
return mDoKitViewPos[tag]
}
fun getDoKitViewPos(tag: String): DoKitViewInfo? = doKitViewPos[tag]
/**
* 只有普通的浮标才需要调用
......@@ -134,21 +127,15 @@ internal class DokitViewManager : DokitViewManagerInterface {
* @param activity
*/
override fun dispatchOnActivityResumed(activity: Activity?) {
activity?.let {
mDoKitViewManager.dispatchOnActivityResumed(it)
}
activity?.also { ensureViewManager().dispatchOnActivityResumed(it) }
}
override fun onActivityPaused(activity: Activity?) {
activity?.let {
mDoKitViewManager.onActivityPaused(it)
}
activity?.also { ensureViewManager().onActivityPaused(it) }
}
override fun onActivityStopped(activity: Activity?) {
activity?.let {
mDoKitViewManager.onActivityStopped(it)
}
activity?.also { ensureViewManager().onActivityStopped(it) }
}
/**
......@@ -157,63 +144,60 @@ internal class DokitViewManager : DokitViewManagerInterface {
* @param dokitIntent
*/
override fun attach(dokitIntent: DokitIntent) {
mDoKitViewManager.attach(dokitIntent)
ensureViewManager().attach(dokitIntent)
}
/**
* 隐藏工具列表dokitView
*/
fun detachToolPanel() {
mDoKitViewManager.detachToolPanel()
ensureViewManager().detachToolPanel()
}
/**
* 显示工具列表dokitView
*/
fun attachToolPanel(activity: Activity) {
mDoKitViewManager.attachToolPanel(activity)
ensureViewManager().attachToolPanel(activity)
}
/**
* 显示主图标 dokitView
*/
fun attachMainIcon(activity: Activity) {
mDoKitViewManager.attachMainIcon(activity)
ensureViewManager().attachMainIcon(activity)
}
/**
* 隐藏首页图标
*/
fun detachMainIcon() {
mDoKitViewManager.detachMainIcon()
ensureViewManager().detachMainIcon()
}
/**
* 移除每个activity指定的dokitView
*/
override fun detach(tag: String) {
mDoKitViewManager.detach(tag)
ensureViewManager().detach(tag)
}
/**
* 移除每个activity指定的dokitView
*/
override fun detach(dokitView: AbsDokitView) {
mDoKitViewManager.detach(dokitView)
ensureViewManager().detach(dokitView)
}
override fun detach(doKitViewClass: Class<out AbsDokitView>) {
mDoKitViewManager.detach(doKitViewClass)
ensureViewManager().detach(doKitViewClass)
}
/**
* 移除所有activity的所有dokitView
*/
override fun detachAll() {
mDoKitViewManager.detachAll()
ensureViewManager().detachAll()
}
/**
......@@ -223,38 +207,23 @@ internal class DokitViewManager : DokitViewManagerInterface {
* @param tag
* @return
*/
override fun <T : AbsDokitView> getDoKitView(
activity: Activity?,
clazz: Class<T>
): AbsDokitView? {
return if (activity != null) {
mDoKitViewManager.getDoKitView(activity, clazz)
} else {
null
}
override fun <T : AbsDokitView> getDoKitView(activity: Activity?, clazz: Class<T>): AbsDokitView? {
return activity?.let { ensureViewManager().getDoKitView(it, clazz) }
}
/**
* Activity销毁时调用
*/
override fun onActivityDestroyed(activity: Activity?) {
activity?.let {
mDoKitViewManager.onActivityDestroyed(it)
}
activity?.also { ensureViewManager().onActivityDestroyed(it) }
}
/**
* @param activity
* @return
*/
override fun getDoKitViews(activity: Activity?): Map<String, AbsDokitView>? {
return if (activity != null) {
mDoKitViewManager.getDoKitViews(activity)
} else {
null
}
return activity?.let { ensureViewManager().getDoKitViews(it) }
}
/**
......@@ -270,10 +239,10 @@ internal class DokitViewManager : DokitViewManagerInterface {
* @param listener
*/
fun addDokitViewAttachedListener(listener: DokitViewAttachedListener?) {
if (!DoKitManager.IS_NORMAL_FLOAT_MODE && mDoKitViewManager is SystemDoKitViewManager) {
(mDoKitViewManager as SystemDoKitViewManager).addListener(listener!!)
}
listener?.takeIf { !DoKitManager.IS_NORMAL_FLOAT_MODE && _doKitViewManager is SystemDoKitViewManager }
?.also {
(_doKitViewManager as? SystemDoKitViewManager)?.addListener(it)
}
}
/**
......@@ -282,32 +251,29 @@ internal class DokitViewManager : DokitViewManagerInterface {
* @param listener
*/
fun removeDokitViewAttachedListener(listener: DokitViewAttachedListener?) {
if (!DoKitManager.IS_NORMAL_FLOAT_MODE && mDoKitViewManager is SystemDoKitViewManager) {
(mDoKitViewManager as SystemDoKitViewManager).removeListener(listener!!)
}
listener?.takeIf { !DoKitManager.IS_NORMAL_FLOAT_MODE && _doKitViewManager is SystemDoKitViewManager }
?.also {
(_doKitViewManager as SystemDoKitViewManager).removeListener(it)
}
}
/**
* 获取
*
* @return WindowManager
*/
val windowManager: WindowManager
get() = DoKit.APPLICATION.getSystemService(Context.WINDOW_SERVICE) as WindowManager
fun saveLastDokitViewPosInfo(key: String, lastDokitViewPosInfo: LastDokitViewPosInfo) {
mLastDoKitViewPosInfoMaps[key] = lastDokitViewPosInfo
lastDoKitViewPosInfoMaps[key] = lastDokitViewPosInfo
}
fun getLastDokitViewPosInfo(key: String): LastDokitViewPosInfo? {
return mLastDoKitViewPosInfoMaps[key]
}
fun getLastDokitViewPosInfo(key: String): LastDokitViewPosInfo? = lastDoKitViewPosInfoMaps[key]
fun removeLastDokitViewPosInfo(key: String) {
mLastDoKitViewPosInfoMaps.remove(key)
lastDoKitViewPosInfoMaps.remove(key)
}
}
\ No newline at end of file
@Synchronized
private fun ensureViewManager(): AbsDokitViewManager {
return _doKitViewManager
?: run {
if (DoKitManager.IS_NORMAL_FLOAT_MODE) NormalDoKitViewManager() else SystemDoKitViewManager()
}.also {
_doKitViewManager = it
}
}
}
package com.didichuxing.doraemonkit.kit.core
import android.app.Activity
import kotlin.reflect.KClass
/**
* ================================================
......@@ -27,7 +26,6 @@ interface DokitViewManagerInterface {
*/
fun detach(dokitView: AbsDokitView)
/**
* 移除每个activity指定的dokitView tag
*
......@@ -35,10 +33,8 @@ interface DokitViewManagerInterface {
*/
fun detach(tag: String)
fun detach(doKitViewClass: Class<out AbsDokitView>)
/**
* 移除所有activity的所有dokitView
*/
......@@ -51,8 +47,7 @@ interface DokitViewManagerInterface {
* @param tag
* @return
*/
fun <T:AbsDokitView> getDoKitView(activity: Activity?, clazz: Class<T>): AbsDokitView?
fun <T : AbsDokitView> getDoKitView(activity: Activity?, clazz: Class<T>): AbsDokitView?
/**
* 获取页面上所有的dokitView
......@@ -92,10 +87,9 @@ interface DokitViewManagerInterface {
fun onActivityStopped(activity: Activity?)
/**
* Called on [Activity] resumed from activity lifecycle callbacks
*
* @param activity
* @param activity resumed activity
*/
fun dispatchOnActivityResumed(activity: Activity?)
}
\ No newline at end of file
}
......@@ -8,10 +8,9 @@ import android.view.KeyEvent
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import com.didichuxing.doraemonkit.DoKit
import androidx.collection.ArrayMap
import com.didichuxing.doraemonkit.DoKitEnv
import com.didichuxing.doraemonkit.R
import com.didichuxing.doraemonkit.kit.core.DoKitManager.WS_MODE
import com.didichuxing.doraemonkit.constant.WSMode
import com.didichuxing.doraemonkit.extension.tagName
import com.didichuxing.doraemonkit.kit.main.MainIconDoKitView
import com.didichuxing.doraemonkit.kit.performance.PerformanceDokitView
......@@ -28,29 +27,24 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
private const val MC_DELAY = 100
}
private val context: Context get() = DoKitEnv.requireApp()
/**
* 每个Activity中dokitView的集合 用户手动移除和页面销毁时都需要remove
*
*/
private val mActivityDoKitViewMap: MutableMap<Activity, MutableMap<String, AbsDokitView>> by lazy {
mutableMapOf<Activity, MutableMap<String, AbsDokitView>>()
}
private val activityDoKitViewMap: MutableMap<Activity, MutableMap<String, AbsDokitView>> = ArrayMap<Activity, MutableMap<String, AbsDokitView>>()
/**
* 只用来记录全局的同步 只有用户手动移除时才会remove
*/
private val mGlobalSingleDoKitViewInfoMap: MutableMap<String, GlobalSingleDokitViewInfo> by lazy {
mutableMapOf<String, GlobalSingleDokitViewInfo>()
}
private val mContext: Context by lazy { DoKit.APPLICATION }
private val globalSingleDoKitViewInfoMap: MutableMap<String, GlobalSingleDokitViewInfo> = ArrayMap<String, GlobalSingleDokitViewInfo>()
/**
* 当app进入后台时调用
*/
override fun notifyBackground() {
mActivityDoKitViewMap.forEach { maps ->
activityDoKitViewMap.forEach { maps ->
maps.value.forEach { map ->
map.value.onEnterBackground()
}
......@@ -61,7 +55,7 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
* 当app进入前台时调用
*/
override fun notifyForeground() {
mActivityDoKitViewMap.forEach { maps ->
activityDoKitViewMap.forEach { maps ->
maps.value.forEach { map ->
map.value.onEnterForeground()
}
......@@ -94,10 +88,8 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
onActivityBackResume(activity)
}
}
}
override fun attachMainIcon(activity: Activity?) {
if (activity == null) {
return
......@@ -143,7 +135,6 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
attachMcRecodingDoKitView(activity)
}
/**
* 新建activity
*
......@@ -155,7 +146,7 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
}
//将所有的dokitView添加到新建的Activity中去
for (dokitViewInfo: GlobalSingleDokitViewInfo in mGlobalSingleDoKitViewInfoMap.values) {
for (dokitViewInfo: GlobalSingleDokitViewInfo in globalSingleDoKitViewInfoMap.values) {
//如果不是性能kitView 则不显示
if (activity is UniversalActivity && dokitViewInfo.absDokitViewClass != PerformanceDokitView::class.java) {
continue
......@@ -196,10 +187,10 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
return
}
val existDoKitViews: Map<String, AbsDokitView>? = mActivityDoKitViewMap[activity]
val existDoKitViews: Map<String, AbsDokitView>? = activityDoKitViewMap[activity]
//更新所有全局DokitView的位置
if (mGlobalSingleDoKitViewInfoMap.isNotEmpty()) {
for (gDoKitViewInfo in mGlobalSingleDoKitViewInfoMap.values) {
if (globalSingleDoKitViewInfoMap.isNotEmpty()) {
for (gDoKitViewInfo in globalSingleDoKitViewInfoMap.values) {
//如果不是性能kitView 则需要重新更新位置
if (activity is UniversalActivity && gDoKitViewInfo.absDokitViewClass != PerformanceDokitView::class.java) {
continue
......@@ -244,7 +235,6 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
attachMcRecodingDoKitView(activity)
}
override fun onActivityPaused(activity: Activity?) {
if (activity == null) {
return
......@@ -256,12 +246,11 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
doKitView.onPause()
}
}
}
private fun detachCountDownDoKitView(activity: Activity) {
val countDownDoKitView = mutableListOf<AbsDokitView>()
mActivityDoKitViewMap[activity]?.forEach {
activityDoKitViewMap[activity]?.forEach {
if (it.value.mode == DoKitViewLaunchMode.COUNTDOWN) {
countDownDoKitView.add(it.value)
}
......@@ -272,7 +261,6 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
}
override fun onActivityStopped(activity: Activity?) {
}
/**
......@@ -284,13 +272,13 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
try {
//判断当前Activity是否存在dokitView map
val currentActivityDoKitViews: MutableMap<String, AbsDokitView> = when {
(mActivityDoKitViewMap[doKitIntent.activity] == null) -> {
(activityDoKitViewMap[doKitIntent.activity] == null) -> {
val doKitViewMap = mutableMapOf<String, AbsDokitView>()
mActivityDoKitViewMap[doKitIntent.activity] = doKitViewMap
activityDoKitViewMap[doKitIntent.activity] = doKitViewMap
doKitViewMap
}
else -> {
mActivityDoKitViewMap[doKitIntent.activity]!!
activityDoKitViewMap[doKitIntent.activity]!!
}
}
......@@ -310,10 +298,10 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
doKitView.bundle = doKitIntent.bundle
doKitView.tag = doKitIntent.tag
doKitView.setActivity(doKitIntent.activity)
doKitView.performCreate(mContext)
doKitView.performCreate(context)
//在全局dokitviews中保存该类型的
mGlobalSingleDoKitViewInfoMap[doKitView.tag] =
globalSingleDoKitViewInfoMap[doKitView.tag] =
createGlobalSingleDokitViewInfo(doKitView)
//得到activity window中的根布局
......@@ -349,7 +337,7 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
if (doKitRootView != null) {
return doKitRootView
}
doKitRootView = DokitFrameLayout(mContext, DokitFrameLayout.DoKitFrameLayoutFlag_ROOT)
doKitRootView = DokitFrameLayout(context, DokitFrameLayout.DoKitFrameLayoutFlag_ROOT)
//普通模式的返回按键监听
doKitRootView.setOnKeyListener(View.OnKeyListener { _, keyCode, _ ->
//监听返回键
......@@ -408,7 +396,6 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
detach(dokitView.tag)
}
/**
* 根据tag 移除ui和列表中的数据
*
......@@ -420,8 +407,8 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
private fun realDetach(tag: String) {
//移除每个activity中指定的dokitView
for (activityKey in mActivityDoKitViewMap.keys) {
val doKitViewMap = mActivityDoKitViewMap[activityKey]
for (activityKey in activityDoKitViewMap.keys) {
val doKitViewMap = activityDoKitViewMap[activityKey]
//定位到指定dokitView
val doKitView = doKitViewMap?.get(tag) ?: continue
if (doKitView.doKitView != null) {
......@@ -438,31 +425,29 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
doKitViewMap.remove(tag)
}
//同步移除全局指定类型的dokitView
if (mGlobalSingleDoKitViewInfoMap.containsKey(tag)) {
mGlobalSingleDoKitViewInfoMap.remove(tag)
if (globalSingleDoKitViewInfoMap.containsKey(tag)) {
globalSingleDoKitViewInfoMap.remove(tag)
}
}
override fun detach(doKitViewClass: Class<out AbsDokitView>) {
detach(doKitViewClass.tagName)
}
/**
* 移除所有activity的所有dokitView
*/
override fun detachAll() {
//移除每个activity中所有的dokitView
for (activityKey: Activity in mActivityDoKitViewMap.keys) {
val doKitViewMap = mActivityDoKitViewMap[activityKey]
for (activityKey: Activity in activityDoKitViewMap.keys) {
val doKitViewMap = activityDoKitViewMap[activityKey]
//移除指定UI
getDoKitRootContentView(activityKey).removeAllViews()
//移除map中的数据
doKitViewMap?.clear()
}
mGlobalSingleDoKitViewInfoMap.clear()
globalSingleDoKitViewInfoMap.clear()
}
/**
......@@ -480,9 +465,9 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
return null
}
return if (mActivityDoKitViewMap[activity] == null) {
return if (activityDoKitViewMap[activity] == null) {
null
} else mActivityDoKitViewMap[activity]?.get(clazz.tagName)
} else activityDoKitViewMap[activity]?.get(clazz.tagName)
}
/**
......@@ -502,9 +487,7 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
for (doKitView in doKitViewMap.values) {
doKitView.performDestroy()
}
mActivityDoKitViewMap.remove(activity)
activityDoKitViewMap.remove(activity)
}
/**
......@@ -517,7 +500,6 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
return activity.window.decorView as ViewGroup
}
/**
* 获取当前页面所有的dokitView
*
......@@ -525,7 +507,7 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
* @return
*/
override fun getDoKitViews(activity: Activity?): Map<String, AbsDokitView> {
return mActivityDoKitViewMap[activity] ?: emptyMap()
return activityDoKitViewMap[activity] ?: emptyMap()
}
private fun createGlobalSingleDokitViewInfo(dokitView: AbsDokitView): GlobalSingleDokitViewInfo {
......@@ -536,6 +518,4 @@ internal class NormalDoKitViewManager : AbsDokitViewManager() {
dokitView.bundle
)
}
}
\ No newline at end of file
}
......@@ -7,7 +7,6 @@ import com.didichuxing.doraemonkit.DoKit
import com.didichuxing.doraemonkit.constant.BundleKey
import com.didichuxing.doraemonkit.constant.FragmentIndex
import com.didichuxing.doraemonkit.extension.tagName
import kotlin.reflect.KClass
/**
* 悬浮窗和全屏启动器
......@@ -25,19 +24,19 @@ internal object SimpleDoKitLauncher {
val doKitIntent = DokitIntent(targetClass)
doKitIntent.mode = mode
doKitIntent.bundle = bundle
DokitViewManager.instance.attach(doKitIntent)
DokitViewManager.INSTANCE.attach(doKitIntent)
}
fun removeFloating(
targetClass: Class<out AbsDokitView>
) {
DokitViewManager.instance.detach(targetClass.tagName)
DokitViewManager.INSTANCE.detach(targetClass.tagName)
}
fun removeFloating(
dokitView: AbsDokitView
) {
DokitViewManager.instance.detach(dokitView)
DokitViewManager.INSTANCE.detach(dokitView)
}
......@@ -71,4 +70,4 @@ internal object SimpleDoKitLauncher {
}
\ No newline at end of file
}
......@@ -4,8 +4,7 @@ import android.app.Activity
import android.content.Context
import android.text.TextUtils
import com.didichuxing.doraemonkit.DoKit
import com.didichuxing.doraemonkit.DoKit.Companion.isMainIconShow
import com.didichuxing.doraemonkit.DoKit.Companion.show
import com.didichuxing.doraemonkit.DoKitEnv
import com.didichuxing.doraemonkit.extension.tagName
import com.didichuxing.doraemonkit.kit.health.CountDownDoKitView
import com.didichuxing.doraemonkit.kit.main.MainIconDoKitView
......@@ -17,15 +16,17 @@ import com.didichuxing.doraemonkit.util.DoKitSystemUtil
* 系统悬浮窗管理类
*/
internal class SystemDoKitViewManager : AbsDokitViewManager() {
private val context: Context get() = DoKitEnv.requireApp()
/**
* 参考:
* https://blog.csdn.net/awenyini/article/details/78265284
* https://yuqirong.me/2017/09/28/Window%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90(%E4%B8%80)%EF%BC%9A%E4%B8%8EDecorView%E7%9A%84%E9%82%A3%E4%BA%9B%E4%BA%8B/
*/
private val mWindowManager = DokitViewManager.instance.windowManager
private val mContext: Context by lazy { DoKit.APPLICATION }
private val mDoKitViews: MutableList<AbsDokitView> by lazy { mutableListOf<AbsDokitView>() }
private val mListeners: MutableList<DokitViewManager.DokitViewAttachedListener> by lazy { mutableListOf<DokitViewManager.DokitViewAttachedListener>() }
private val windowManager = DokitViewManager.INSTANCE.windowManager
private val doKitViews: MutableList<AbsDokitView> by lazy { mutableListOf<AbsDokitView>() }
private val listeners: MutableList<DokitViewManager.DokitViewAttachedListener> by lazy { mutableListOf<DokitViewManager.DokitViewAttachedListener>() }
/**
* 获取页面上所有的dokitViews
......@@ -34,7 +35,7 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
*/
override fun getDoKitViews(activity: Activity?): Map<String, AbsDokitView> {
val doKitViewMaps: MutableMap<String, AbsDokitView> = mutableMapOf()
for (doKitView in mDoKitViews) {
for (doKitView in doKitViews) {
doKitViewMaps[doKitView.tag] = doKitView
}
return doKitViewMaps
......@@ -44,7 +45,7 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
* 当app进入后台时调用
*/
override fun notifyBackground() {
for (doKitView in mDoKitViews) {
for (doKitView in doKitViews) {
doKitView.onEnterBackground()
}
}
......@@ -53,26 +54,19 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
* 当app进入前台时调用
*/
override fun notifyForeground() {
for (page in mDoKitViews) {
for (page in doKitViews) {
page.onEnterForeground()
}
}
/**
* @param activity
*/
override fun dispatchOnActivityResumed(activity: Activity?) {
if (activity == null) {
return
}
if (activity is UniversalActivity) {
val countDownDoKitView =
DoKit.getDoKitView<CountDownDoKitView>(activity, CountDownDoKitView::class)
if (countDownDoKitView != null) {
detach(
CountDownDoKitView::class.tagName
)
DoKit.getDoKitView<CountDownDoKitView>(activity)?.also {
detach(CountDownDoKitView::class.tagName)
}
return
}
......@@ -81,7 +75,6 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
onMainActivityResume(activity)
}
DoKitManager.ACTIVITY_LIFECYCLE_INFOS[activity.javaClass.canonicalName]?.let {
//新建Activity
if (it.lifeCycleStatus == DoKitLifeCycleStatus.RESUME && it.isInvokeStopMethod == false) {
......@@ -95,7 +88,6 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
}
}
//需要手动调用 生命周期回调
val dokitViewMap = getDoKitViews(activity)
for (absDokitView in dokitViewMap.values) {
......@@ -103,7 +95,6 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
}
}
override fun attachMainIcon(activity: Activity?) {
if (activity == null) {
return
......@@ -150,25 +141,25 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
}
//判断是否有MainIcon
if (DoKitManager.ALWAYS_SHOW_MAIN_ICON && !isMainIconShow) {
show()
if (DoKitManager.ALWAYS_SHOW_MAIN_ICON && !DoKit.isMainIconShow) {
DoKit.show()
}
//如果倒计时浮标没显示则重新添加
val countDownDokitView =
DoKit.getDoKitView<CountDownDoKitView>(activity, CountDownDoKitView::class)
if (countDownDokitView == null) {
if (activity is UniversalActivity) {
return
DoKit.getDoKitView<CountDownDoKitView>(activity)
?.also {
if (activity is UniversalActivity) {
detach(CountDownDoKitView::class.tagName)
} else {
// 重置倒计时
it.reset()
}
}
attachCountDownDoKitView(activity)
} else {
if (activity is UniversalActivity) {
detach(CountDownDoKitView::class.tagName)
} else {
//重置倒计时
(countDownDokitView as CountDownDoKitView).reset()
?: also {
if (activity is UniversalActivity) {
return@also
}
attachCountDownDoKitView(activity)
}
}
}
override fun onActivityBackResume(activity: Activity?) {
......@@ -177,14 +168,9 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
}
//移除倒计时浮标
val countDownDokitView =
DoKit.getDoKitView<CountDownDoKitView>(activity, CountDownDoKitView::class)
if (countDownDokitView == null) {
attachCountDownDoKitView(activity)
} else {
//重置倒计时
(countDownDokitView as CountDownDoKitView).reset()
}
DoKit.getDoKitView<CountDownDoKitView>(activity)
?.reset() // 重置倒计时
?: attachCountDownDoKitView(activity)
//判断是否存在主入口icon
val dokitViews = getDoKitViews(activity)
......@@ -220,7 +206,7 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
override fun attach(pageIntent: DokitIntent) {
try {
for (dokitView in mDoKitViews) {
for (dokitView in doKitViews) {
//如果当前page对象已经存在 则直接返回
if (pageIntent.targetClass.isInstance(dokitView)) {
return
......@@ -231,17 +217,17 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
dokitView.bundle = pageIntent.bundle
//page.setTag(pageIntent.tag);
//添加进page列表
mDoKitViews.add(dokitView)
dokitView.performCreate(mContext)
doKitViews.add(dokitView)
dokitView.performCreate(context)
//在window上显示floatIcon
//WindowManagerImpl具体实现
mWindowManager.addView(
windowManager.addView(
dokitView.doKitView,
dokitView.systemLayoutParams
)
dokitView.onResume()
if (!DoKitManager.IS_NORMAL_FLOAT_MODE) {
for (listener in mListeners) {
for (listener in listeners) {
listener.onDokitViewAdd(dokitView)
}
}
......@@ -254,11 +240,11 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
if (TextUtils.isEmpty(tag)) {
return
}
val it = mDoKitViews.iterator()
val it = doKitViews.iterator()
while (it.hasNext()) {
val dokitView = it.next()
if (tag == dokitView.tag) {
mWindowManager.removeView(dokitView.doKitView)
windowManager.removeView(dokitView.doKitView)
dokitView.performDestroy()
it.remove()
return
......@@ -266,23 +252,20 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
}
}
override fun detach(dokitView: AbsDokitView) {
detach(dokitView.tagName)
}
override fun detach(doKitViewClass: Class<out AbsDokitView>) {
detach(doKitViewClass.tagName)
}
override fun detachAll() {
val it = mDoKitViews.iterator()
val it = doKitViews.iterator()
while (it.hasNext()) {
val doKitView = it.next()
mWindowManager.removeView(doKitView.doKitView)
windowManager.removeView(doKitView.doKitView)
doKitView.performDestroy()
it.remove()
}
......@@ -295,7 +278,7 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
if (TextUtils.isEmpty(clazz.tagName)) {
return null
}
for (dokitView in mDoKitViews) {
for (dokitView in doKitViews) {
if (clazz.tagName == dokitView.tag) {
return dokitView
}
......@@ -315,12 +298,12 @@ internal class SystemDoKitViewManager : AbsDokitViewManager() {
* @param listener
*/
fun addListener(listener: DokitViewManager.DokitViewAttachedListener) {
mListeners.add(listener)
listeners.add(listener)
}
fun removeListener(listener: DokitViewManager.DokitViewAttachedListener) {
mListeners.remove(listener)
listeners.remove(listener)
}
}
\ No newline at end of file
}
......@@ -9,7 +9,7 @@ import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.didichuxing.doraemonkit.DoKit;
import com.didichuxing.doraemonkit.DoKitEnv;
import com.didichuxing.doraemonkit.R;
import com.didichuxing.doraemonkit.picasso.DokitPicasso;
import com.didichuxing.doraemonkit.picasso.MemoryPolicy;
......@@ -80,7 +80,7 @@ public class LargeImageListAdapter extends AbsRecyclerAdapter<AbsViewBinder<Larg
public void bind(final LargeImageInfo largeImageInfo) {
try {
int resourceUrl = Integer.parseInt(largeImageInfo.getUrl());
DokitPicasso.with(DoKit.APPLICATION)
DokitPicasso.with(DoKitEnv.requireApp())
.load(resourceUrl)
.memoryPolicy(MemoryPolicy.NO_CACHE)
.resize(ConvertUtils.dp2px(100), ConvertUtils.dp2px(100))
......@@ -88,7 +88,7 @@ public class LargeImageListAdapter extends AbsRecyclerAdapter<AbsViewBinder<Larg
.into(iv);
tvLink.setText("resource id:" + resourceUrl);
} catch (Exception e) {
DokitPicasso.with(DoKit.APPLICATION)
DokitPicasso.with(DoKitEnv.requireApp())
.load(largeImageInfo.getUrl())
.memoryPolicy(MemoryPolicy.NO_CACHE)
.resize(ConvertUtils.dp2px(100), ConvertUtils.dp2px(100))
......
......@@ -2,7 +2,7 @@ package com.didichuxing.doraemonkit.kit.layoutborder
import android.app.Activity
import android.content.Context
import com.didichuxing.doraemonkit.DoKit.Companion.launchFloating
import com.didichuxing.doraemonkit.DoKit
import com.didichuxing.doraemonkit.R
import com.didichuxing.doraemonkit.config.LayoutBorderConfig
import com.didichuxing.doraemonkit.kit.AbstractKit
......@@ -19,7 +19,7 @@ class LayoutBorderKit : AbstractKit() {
get() = R.mipmap.dk_view_border
override fun onClickWithReturn(activity: Activity): Boolean {
launchFloating(LayoutLevelDokitView::class.java)
DoKit.launchFloating(LayoutLevelDokitView::class.java)
LayoutBorderManager.getInstance().start()
LayoutBorderConfig.setLayoutBorderOpen(true)
LayoutBorderConfig.setLayoutLevelOpen(true)
......@@ -34,7 +34,5 @@ class LayoutBorderKit : AbstractKit() {
override val isInnerKit: Boolean
get() = true
override fun innerKitId(): String {
return "dokit_sdk_ui_ck_border"
}
}
\ No newline at end of file
override fun innerKitId(): String = "dokit_sdk_ui_ck_border"
}
......@@ -2,7 +2,7 @@ package com.didichuxing.doraemonkit.kit.lbs.manual
import android.app.Activity
import android.content.Context
import com.didichuxing.doraemonkit.DoKit.Companion.launchFloating
import com.didichuxing.doraemonkit.DoKit
import com.didichuxing.doraemonkit.R
import com.didichuxing.doraemonkit.aop.DokitPluginConfig
import com.didichuxing.doraemonkit.kit.AbstractKit
......@@ -20,6 +20,9 @@ class PosAdjustKit : AbstractKit() {
override val icon: Int
get() = R.mipmap.dk_mock_location
override val isInnerKit: Boolean
get() = true
override fun onClickWithReturn(activity: Activity): Boolean {
if (!DokitPluginConfig.SWITCH_DOKIT_PLUGIN) {
ToastUtils.showShort(DoKitCommUtil.getString(R.string.dk_plugin_close_tip))
......@@ -29,15 +32,11 @@ class PosAdjustKit : AbstractKit() {
ToastUtils.showShort(DoKitCommUtil.getString(R.string.dk_plugin_gps_close_tip))
return false
}
launchFloating(PosAdjustKitView::class.java)
DoKit.launchFloating<PosAdjustKitView>()
return true
}
override fun onAppInit(context: Context?) {}
override val isInnerKit: Boolean
get() = true
override fun innerKitId(): String {
return "dokit_sdk_lbs_ck_pos_adjust"
}
}
\ No newline at end of file
override fun innerKitId(): String = "dokit_sdk_lbs_ck_pos_adjust"
}
......@@ -19,7 +19,7 @@ import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.didichuxing.doraemonkit.DoKit;
import com.didichuxing.doraemonkit.DoKitEnv;
import com.didichuxing.doraemonkit.R;
import com.didichuxing.doraemonkit.kit.core.AbsDokitView;
import com.didichuxing.doraemonkit.kit.core.DokitViewLayoutParams;
......@@ -272,7 +272,7 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
ToastUtils.showShort("文件保存在:" + logPath);
//分享
if (operateType == 101) {
DoKitFileUtil.systemShare(DoKit.APPLICATION, logFile);
DoKitFileUtil.systemShare(DoKitEnv.requireApp(), logFile);
}
}
}
......@@ -457,4 +457,4 @@ public class LogInfoDokitView extends AbsDokitView implements LogInfoManager.OnL
public boolean canDrag() {
return false;
}
}
\ No newline at end of file
}
......@@ -2,7 +2,7 @@ package com.didichuxing.doraemonkit.kit.loginfo
import android.app.Activity
import android.content.Context
import com.didichuxing.doraemonkit.DoKit.Companion.launchFloating
import com.didichuxing.doraemonkit.DoKit
import com.didichuxing.doraemonkit.R
import com.didichuxing.doraemonkit.config.LogInfoConfig
import com.didichuxing.doraemonkit.kit.AbstractKit
......@@ -18,8 +18,11 @@ class LogInfoKit : AbstractKit() {
override val icon: Int
get() = R.mipmap.dk_log_info
override val isInnerKit: Boolean
get() = true
override fun onClickWithReturn(activity: Activity): Boolean {
launchFloating(LogInfoDokitView::class.java)
DoKit.launchFloating<LogInfoDokitView>()
//开启日志服务
LogInfoManager.getInstance().start()
return true
......@@ -29,10 +32,5 @@ class LogInfoKit : AbstractKit() {
LogInfoConfig.setLogInfoOpen(false)
}
override val isInnerKit: Boolean
get() = true
override fun innerKitId(): String {
return "dokit_sdk_comm_ck_log"
}
}
\ No newline at end of file
override fun innerKitId(): String = "dokit_sdk_comm_ck_log"
}
......@@ -4,7 +4,7 @@ import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.widget.FrameLayout
import com.didichuxing.doraemonkit.DoKit.Companion.showToolPanel
import com.didichuxing.doraemonkit.DoKit
import com.didichuxing.doraemonkit.R
import com.didichuxing.doraemonkit.config.FloatIconConfig
import com.didichuxing.doraemonkit.datapick.DataPickManager
......@@ -19,13 +19,14 @@ class MainIconDoKitView : AbsDokitView() {
//public static int FLOAT_SIZE = 174;
//public static int FLOAT_SIZE = 58;
override fun onCreate(context: Context) {}
override fun onViewCreated(view: FrameLayout) {
//设置id便于查找
doKitView?.id = R.id.float_icon_id
//设置icon 点击事件
doKitView?.setOnClickListener { //统计入口
DataPickManager.getInstance().addData("dokit_sdk_home_ck_entry")
showToolPanel()
DoKit.showToolPanel()
}
}
......@@ -48,4 +49,4 @@ class MainIconDoKitView : AbsDokitView() {
immInvalidate()
}
}
}
\ No newline at end of file
}
......@@ -83,7 +83,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
ThreadUtils.executeByIo(new ThreadUtils.SimpleTask<List<T>>() {
@Override
public List<T> doInBackground() throws Throwable {
DokitDatabase db = DokitViewManager.getInstance().getDb();
DokitDatabase db = DokitViewManager.getINSTANCE().getDb();
if (db.mockApiDao() != null) {
return (List<T>) db.mockApiDao().getAllInterceptApi();
} else {
......@@ -112,7 +112,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
ThreadUtils.executeByIo(new ThreadUtils.SimpleTask<List<T>>() {
@Override
public List<T> doInBackground() throws Throwable {
DokitDatabase db = DokitViewManager.getInstance().getDb();
DokitDatabase db = DokitViewManager.getINSTANCE().getDb();
if (db.mockApiDao() != null) {
return (List<T>) db.mockApiDao().getAllTemplateApi();
} else {
......@@ -139,7 +139,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
* 数据库中获取指定的 template api
*/
public T getTemplateApiByIdInDb(String id) {
return (T) DokitViewManager.getInstance().getDb().mockApiDao().findTemplateApiById(id);
return (T) DokitViewManager.getINSTANCE().getDb().mockApiDao().findTemplateApiById(id);
}
......@@ -147,7 +147,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
* 数据库中获取指定的mock intercept api
*/
public T getInterceptApiByIdInDb(String id) {
return (T) DokitViewManager.getInstance().getDb().mockApiDao().findInterceptApiById(id);
return (T) DokitViewManager.getINSTANCE().getDb().mockApiDao().findInterceptApiById(id);
}
/**
......@@ -219,7 +219,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
ThreadUtils.executeByIo(new ThreadUtils.SimpleTask<Object>() {
@Override
public Object doInBackground() throws Throwable {
DokitViewManager.getInstance().getDb().mockApiDao().insertAllInterceptApi(mockApis);
DokitViewManager.getINSTANCE().getDb().mockApiDao().insertAllInterceptApi(mockApis);
//更新本地数据
getAllInterceptApis();
return null;
......@@ -242,7 +242,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
ThreadUtils.executeByIo(new ThreadUtils.SimpleTask<Void>() {
@Override
public Void doInBackground() throws Throwable {
DokitViewManager.getInstance().getDb().mockApiDao().insertAllTemplateApi(mockApis);
DokitViewManager.getINSTANCE().getDb().mockApiDao().insertAllTemplateApi(mockApis);
return null;
}
......@@ -265,7 +265,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
ThreadUtils.executeByIo(new ThreadUtils.SimpleTask<Void>() {
@Override
public Void doInBackground() throws Throwable {
DokitViewManager.getInstance().getDb().mockApiDao().updateInterceptApi(mockApi);
DokitViewManager.getINSTANCE().getDb().mockApiDao().updateInterceptApi(mockApi);
return null;
}
......@@ -290,7 +290,7 @@ public class DokitDbManager<T extends AbsMockApiBean> {
ThreadUtils.executeByIo(new ThreadUtils.SimpleTask<Object>() {
@Override
public Object doInBackground() throws Throwable {
DokitViewManager.getInstance().getDb().mockApiDao().updateTemplateApi(mockApi);
DokitViewManager.getINSTANCE().getDb().mockApiDao().updateTemplateApi(mockApi);
//更新本地数据
getAllTemplateApis();
return null;
......
package com.didichuxing.doraemonkit.kit.network.ui;
import static android.content.Context.CLIPBOARD_SERVICE;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
......@@ -14,7 +16,7 @@ import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentActivity;
import com.didichuxing.doraemonkit.DoKit;
import com.didichuxing.doraemonkit.DoKitEnv;
import com.didichuxing.doraemonkit.R;
import com.didichuxing.doraemonkit.kit.loginfo.LogExportDialog;
import com.didichuxing.doraemonkit.kit.network.bean.NetworkRecord;
......@@ -41,8 +43,6 @@ import java.net.URLDecoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import static android.content.Context.CLIPBOARD_SERVICE;
/**
* @desc: 显示request和response的view
*/
......@@ -263,7 +263,7 @@ public class NetworkDetailView extends LinearLayout {
ToastUtils.showShort("文件保存在:" + logPath);
//分享
if (operateType == 101) {
DoKitFileUtil.systemShare(DoKit.APPLICATION, logFile);
DoKitFileUtil.systemShare(DoKitEnv.requireApp(), logFile);
}
}
}
......
......@@ -15,6 +15,7 @@ import android.view.Choreographer;
import androidx.annotation.RequiresApi;
import com.didichuxing.doraemonkit.DoKit;
import com.didichuxing.doraemonkit.DoKitEnv;
import com.didichuxing.doraemonkit.config.DokitMemoryConfig;
import com.didichuxing.doraemonkit.kit.core.DoKitManager;
import com.didichuxing.doraemonkit.kit.health.AppHealthInfoUtil;
......@@ -181,8 +182,8 @@ public class PerformanceDataManager {
}
public void init() {
mContext = DoKit.APPLICATION.getApplicationContext();
mActivityManager = (ActivityManager) DoKit.APPLICATION.getSystemService(Context.ACTIVITY_SERVICE);
mContext = DoKitEnv.requireApp().getApplicationContext();
mActivityManager = (ActivityManager) DoKitEnv.requireApp().getSystemService(Context.ACTIVITY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mAboveAndroidO = true;
}
......
......@@ -8,7 +8,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.didichuxing.doraemonkit.DoKit;
import com.didichuxing.doraemonkit.DoKitEnv;
import com.didichuxing.doraemonkit.R;
import com.didichuxing.doraemonkit.aop.method_stack.MethodStackUtil;
import com.didichuxing.doraemonkit.kit.core.BaseFragment;
......@@ -109,7 +109,7 @@ public class AppStartInfoFragment extends BaseFragment {
if (result) {
ToastUtils.showShort("启动信息文件保存在:" + logPath);
//分享
DoKitFileUtil.systemShare(DoKit.APPLICATION, logFile);
DoKitFileUtil.systemShare(DoKitEnv.requireApp(), logFile);
}
}
......@@ -133,4 +133,4 @@ public class AppStartInfoFragment extends BaseFragment {
}
}
\ No newline at end of file
}
......@@ -124,7 +124,7 @@ class ToolPanelDoKitView : AbsDokitView() {
//常规模式下点击常用工具不隐藏工具面板
it.onClick(ActivityUtils.getTopActivity())
if (it.onClickWithReturn(ActivityUtils.getTopActivity())) {
DokitViewManager.instance.detachToolPanel()
DokitViewManager.INSTANCE.detachToolPanel()
}
//添加埋点
......@@ -185,4 +185,4 @@ class ToolPanelDoKitView : AbsDokitView() {
override fun restrictBorderline(): Boolean {
return false
}
}
\ No newline at end of file
}
......@@ -2,7 +2,7 @@ package com.didichuxing.doraemonkit.kit.uiperformance
import android.app.Activity
import android.content.Context
import com.didichuxing.doraemonkit.DoKit.Companion.launchFloating
import com.didichuxing.doraemonkit.DoKit
import com.didichuxing.doraemonkit.R
import com.didichuxing.doraemonkit.kit.AbstractKit
import com.google.auto.service.AutoService
......@@ -18,10 +18,13 @@ class UIPerformanceKit : AbstractKit() {
override val icon: Int
get() = R.mipmap.dk_ui_performance
override val isInnerKit: Boolean
get() = true
override fun onClickWithReturn(activity: Activity): Boolean {
UIPerformanceManager.getInstance().start(activity)
launchFloating(UIPerformanceDisplayDokitView::class.java)
launchFloating(UIPerformanceInfoDokitView::class.java)
DoKit.launchFloating<UIPerformanceDisplayDokitView>()
DoKit.launchFloating<UIPerformanceInfoDokitView>()
//直接显示层级
UIPerformanceManager.getInstance().initRefresh()
......@@ -29,10 +32,6 @@ class UIPerformanceKit : AbstractKit() {
}
override fun onAppInit(context: Context?) {}
override val isInnerKit: Boolean
get() = true
override fun innerKitId(): String {
return "dokit_sdk_performance_ck_hierarchy"
}
}
\ No newline at end of file
override fun innerKitId(): String = "dokit_sdk_performance_ck_hierarchy"
}
......@@ -2,7 +2,7 @@ package com.didichuxing.doraemonkit.kit.viewcheck
import android.app.Activity
import android.content.Context
import com.didichuxing.doraemonkit.DoKit.Companion.launchFloating
import com.didichuxing.doraemonkit.DoKit
import com.didichuxing.doraemonkit.R
import com.didichuxing.doraemonkit.kit.AbstractKit
import com.google.auto.service.AutoService
......@@ -18,9 +18,9 @@ class ViewCheckerKit : AbstractKit() {
get() = R.mipmap.dk_view_check
override fun onClickWithReturn(activity: Activity): Boolean {
launchFloating(ViewCheckDokitView::class.java)
launchFloating(ViewCheckDrawDokitView::class.java)
launchFloating(ViewCheckInfoDokitView::class.java)
DoKit.launchFloating<ViewCheckDokitView>()
DoKit.launchFloating<ViewCheckDrawDokitView>()
DoKit.launchFloating<ViewCheckInfoDokitView>()
return true
}
......@@ -28,7 +28,5 @@ class ViewCheckerKit : AbstractKit() {
override val isInnerKit: Boolean
get() = true
override fun innerKitId(): String {
return "dokit_sdk_ui_ck_widget"
}
}
\ No newline at end of file
override fun innerKitId(): String = "dokit_sdk_ui_ck_widget"
}
package com.didichuxing.doraemonkit.util;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
import androidx.annotation.StringRes;
import com.didichuxing.doraemonkit.DoKit;
import com.didichuxing.doraemonkit.DoKitEnv;
import org.json.JSONException;
import org.json.JSONObject;
......@@ -29,21 +28,20 @@ import okio.Buffer;
public class DoKitCommUtil {
public static String getString(@StringRes int stringId) {
return DoKit.APPLICATION.getString(stringId);
return DoKitEnv.requireApp().getString(stringId);
}
@StringRes
public static int getStringId(String str) {
try {
Resources r = DoKit.APPLICATION.getResources();
return r.getIdentifier(str, "string", DoKit.APPLICATION.getPackageName());
Resources r = DoKitEnv.requireApp().getResources();
return r.getIdentifier(str, "string", DoKitEnv.requireApp().getPackageName());
} catch (Exception e) {
LogHelper.e("getStringId", "getStringId===>" + str);
}
return -1;
}
public static String requestBodyToString(RequestBody requestBody) {
try {
Buffer buffer = new Buffer();
......@@ -83,10 +81,10 @@ public class DoKitCommUtil {
* 切换App到前台
*/
public static void changeAppOnForeground(Class<Activity> clazz) {
Intent intent = new Intent(DoKit.APPLICATION, clazz);
Intent intent = new Intent(DoKitEnv.requireApp(), clazz);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setAction(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
DoKit.APPLICATION.startActivity(intent);
DoKitEnv.requireApp().startActivity(intent);
}
}
......@@ -17,7 +17,7 @@ import android.widget.LinearLayout;
import androidx.annotation.AnyRes;
import com.didichuxing.doraemonkit.DoKit;
import com.didichuxing.doraemonkit.DoKitEnv;
import com.didichuxing.doraemonkit.R;
import com.didichuxing.doraemonkit.kit.layoutborder.ViewBorderFrameLayout;
......@@ -49,7 +49,7 @@ public class UIUtils {
public static int getWidthPixels() {
DisplayMetrics metrics = new DisplayMetrics();
WindowManager windowManager = (WindowManager) DoKit.APPLICATION.getSystemService(Context.WINDOW_SERVICE);
WindowManager windowManager = (WindowManager) DoKitEnv.requireApp().getSystemService(Context.WINDOW_SERVICE);
if (windowManager == null) {
return 0;
}
......@@ -62,7 +62,7 @@ public class UIUtils {
}
public static int getRealHeightPixels() {
WindowManager windowManager = (WindowManager) DoKit.APPLICATION.getSystemService(Context.WINDOW_SERVICE);
WindowManager windowManager = (WindowManager) DoKitEnv.requireApp().getSystemService(Context.WINDOW_SERVICE);
int height = 0;
Display display = windowManager.getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
......@@ -79,7 +79,7 @@ public class UIUtils {
}
public static int getStatusBarHeight() {
Resources resources = DoKit.APPLICATION.getResources();
Resources resources = DoKitEnv.requireApp().getResources();
int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android");
int height = resources.getDimensionPixelSize(resourceId);
return height;
......
rootProject.name = "Dokit-Android"
include ':app'
include ':dokit-util'
include ':dokit-ft'
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册