Explorar o código

v1.0.0开发:修复loadingDialog导致内存泄漏的问题

#Suyghur %!s(int64=3) %!d(string=hai) anos
pai
achega
1338a5e9cb

+ 1 - 1
library_base/src/main/java/cn/yyxx/eyuangame/base/utils/Logger.kt

@@ -32,7 +32,7 @@ object Logger {
             //缓存日志最低等级
             .setRecordLevel(Level.DEBUG)
             //是否开启压缩缓存日志内容
-            .setCompressEnable(false)
+            .setCompressEnable(true)
             //缓存文件的过期时间
             .setOverdueDay(3)
             //缓存文件大小限制,超过则会自动扩容新文件

+ 6 - 29
library_core/src/main/java/cn/yyxx/eyuangame/core/impl/SdkBridgeImpl.kt

@@ -40,10 +40,7 @@ import java.util.concurrent.atomic.AtomicInteger
  * Created on 2021/06/16
  */
 class SdkBridgeImpl(context: Context) {
-
-
-    private var mActivity: Activity? = null
-
+    
     private var hasReadGaid = false
     private var roleInfo: SdkRoleInfo? = null
 
@@ -97,7 +94,7 @@ class SdkBridgeImpl(context: Context) {
     fun initialize(activity: Activity, isLandscape: Boolean, callback: ICallback, initCallback: IInitialize) {
         Logger.i("EYuanGameSdk initialize ...")
         isLand = isLandscape
-        this.mActivity = activity
+        
         if (TextUtils.isEmpty(ParamsUtils.getGcpCode(activity))) {
             Logger.e("初始化失败,参数异常,请检查yyxx_cfg.properties中YYXX_GCP_CODE的值")
             initCallback.onResult(-1, "初始化失败,参数异常,请检查yyxx_cfg.properties中YYXX_GAME_CODE的值")
@@ -177,7 +174,7 @@ class SdkBridgeImpl(context: Context) {
 
     fun login(activity: Activity, isAutoLogin: Boolean, callback: ICallback) {
         Logger.i("EYuanGameSdk login ...")
-        this.mActivity = activity
+        
         if (!initState) {
             Logger.e("登录失败,SDK未初始化或初始化失败")
             callback.onResult(-1, "登录失败,SDK未初始化或初始化失败")
@@ -228,7 +225,7 @@ class SdkBridgeImpl(context: Context) {
 
     fun logout(activity: Activity, callback: ICallback) {
         Logger.i("EYuanGameSdk logout ...")
-        this.mActivity = activity
+        
         this.roleInfo = null
         SdkBackLoginInfo.instance.reset()
         FloatCenterServiceManager.instance.detach()
@@ -237,7 +234,7 @@ class SdkBridgeImpl(context: Context) {
 
     fun charge(activity: Activity, chargeInfo: SdkChargeInfo, callback: ICallback) {
         Logger.i("EYuanGameSdk charge ...")
-        this.mActivity = activity
+        
         if (!initState) {
             Logger.e("支付失败,SDK未初始化或初始化失败")
             callback.onResult(-1, "支付失败,SDK未初始化或初始化失败")
@@ -274,26 +271,20 @@ class SdkBridgeImpl(context: Context) {
 
     fun roleCreate(activity: Activity, roleInfo: SdkRoleInfo) {
         Logger.i("EYuanGameSdk roleCreate ...")
-        this.mActivity = activity
-
 
     }
 
     fun roleLauncher(activity: Activity, roleInfo: SdkRoleInfo) {
         Logger.i("EYuanGameSdk roleLauncher ...")
-        this.mActivity = activity
-
     }
 
     fun roleLevelUp(activity: Activity, roleInfo: SdkRoleInfo) {
         Logger.i("EYuanGameSdk roleLevelUp ...")
-        this.mActivity = activity
-
     }
 
     fun openExitView(activity: Activity, callback: ICallback) {
         Logger.i("EYuanGameSdk openExitView ...")
-        this.mActivity = activity
+        
         exitDialog?.apply {
             dismiss()
             exitDialog = null
@@ -324,51 +315,37 @@ class SdkBridgeImpl(context: Context) {
 
     fun onStart(activity: Activity) {
         Logger.i("EYuanGameSdk onStart ...")
-        this.mActivity = activity
-
     }
 
     fun onRestart(activity: Activity) {
         Logger.i("EYuanGameSdk onRestart ...")
-        this.mActivity = activity
-
     }
 
     fun onResume(activity: Activity) {
         Logger.i("EYuanGameSdk onResume ...")
-        this.mActivity = activity
         FloatCenterServiceManager.instance.attach()
-
     }
 
     fun onPause(activity: Activity) {
         Logger.i("EYuanGameSdk onPause ...")
-        this.mActivity = activity
         FloatCenterServiceManager.instance.detach()
-
     }
 
     fun onStop(activity: Activity) {
         Logger.i("EYuanGameSdk onStop ...")
-        this.mActivity = activity
     }
 
     fun onDestroy(activity: Activity) {
         Logger.i("EYuanGameSdk onDestroy ...")
-        this.mActivity = activity
         FloatCenterServiceManager.instance.release()
     }
 
     fun onActivityResult(activity: Activity, requestCode: Int, resultCode: Int, intent: Intent) {
         Logger.i("EYuanGameSdk onActivityResult ...")
-        this.mActivity = activity
-
     }
 
     fun onNewIntent(activity: Activity, intent: Intent) {
         Logger.i("EYuanGameSdk onNewIntent ...")
-        this.mActivity = activity
-
     }
 
     fun getCurrentUserId(): String {

+ 2 - 2
library_core/src/main/java/cn/yyxx/eyuangame/core/impl/center/fragment/BindPhoneFragment.kt

@@ -133,7 +133,7 @@ class BindPhoneFragment : Fragment(), View.OnClickListener {
             //默认4个地区
             areaList.add("86")
             //香港
-            areaList.add("862")
+            areaList.add("852")
             //澳门
             areaList.add("853")
             //台湾
@@ -284,7 +284,7 @@ class BindPhoneFragment : Fragment(), View.OnClickListener {
     }
 
     private fun changeTimeNum() {
-        if (!TimeDownUtils.isRunning()) {
+        if (!TimeDownUtils.isRunning) {
             TimeDownUtils.start(60, object : TimeDownUtils.TimeCallback {
                 override fun onTime(time: Int) {
                     val msg = Message.obtain()

+ 1 - 30
library_core/src/main/java/cn/yyxx/eyuangame/core/impl/login/LoginActivity.kt

@@ -55,8 +55,6 @@ class LoginActivity : FragmentActivity(), View.OnClickListener {
 
     private var showChooseDialog = true
     private var showAutoLoginDialog = false
-    private var loginLoadingDialog: ScaleLoadingDialog? = null
-
 
     private val handler = object : Handler(Looper.getMainLooper()) {
         override fun handleMessage(msg: Message) {
@@ -90,7 +88,6 @@ class LoginActivity : FragmentActivity(), View.OnClickListener {
             override fun onSuccess(result: String) {
                 hideAutoLoginDialog()
                 hideChooseDialog()
-                hideLoadingDialog()
                 this@LoginActivity.finish()
                 implCallback?.onResult(0, result)
             }
@@ -105,7 +102,6 @@ class LoginActivity : FragmentActivity(), View.OnClickListener {
                 if (loginContainer.visibility == View.GONE) {
                     showChooseDialog()
                 }
-                hideLoadingDialog()
                 implCallback?.onResult(-1, result)
             }
 
@@ -364,11 +360,9 @@ class LoginActivity : FragmentActivity(), View.OnClickListener {
         v?.apply {
             when (tag as Int) {
                 ClickType.ACTION_GOOGLE_MODE -> {
-                    showLoadingDialog()
                     userSignInImpl.googleLogin(this@LoginActivity)
                 }
                 ClickType.ACTION_FACEBOOK_MODE -> {
-                    showLoadingDialog()
                     userSignInImpl.facebookLogin(this@LoginActivity)
                 }
                 ClickType.ACTION_ACCOUNT_MODE -> {
@@ -377,7 +371,6 @@ class LoginActivity : FragmentActivity(), View.OnClickListener {
                     loginContainer.visibility = View.VISIBLE
                 }
                 ClickType.ACTION_GUEST_MODE -> {
-                    showLoadingDialog()
                     userSignInImpl.guestLogin(this@LoginActivity)
                 }
             }
@@ -417,7 +410,6 @@ class LoginActivity : FragmentActivity(), View.OnClickListener {
                 showChooseDialog = true
                 hideAutoLoginDialog()
             }
-            showLoadingDialog()
             when (loginType) {
                 LoginType.TYPE_GUEST_LOGIN -> userSignInImpl.guestLogin(this@LoginActivity)
                 LoginType.TYPE_FACEBOOK_LOGIN -> userSignInImpl.facebookLogin(this@LoginActivity)
@@ -428,7 +420,7 @@ class LoginActivity : FragmentActivity(), View.OnClickListener {
     }
 
     private fun changeTimeNum() {
-        if (!TimeDownUtils.isRunning()) {
+        if (!TimeDownUtils.isRunning) {
             TimeDownUtils.start(2, object : TimeDownUtils.TimeCallback {
                 override fun onTime(time: Int) {
                     val msg = Message.obtain()
@@ -449,27 +441,6 @@ class LoginActivity : FragmentActivity(), View.OnClickListener {
         }
     }
 
-    fun showLoadingDialog() {
-        loginLoadingDialog?.apply {
-            if (isShowing) {
-                dismiss()
-            }
-            loginLoadingDialog = null
-        }
-
-        loginLoadingDialog = ScaleLoadingDialog(this, "")
-        loginLoadingDialog?.show()
-    }
-
-    fun hideLoadingDialog() {
-        loginLoadingDialog?.apply {
-            if (isShowing) {
-                dismiss()
-            }
-            loginLoadingDialog = null
-        }
-    }
-
     companion object {
 
         private var implCallback: IImplCallback? = null

+ 27 - 2
library_core/src/main/java/cn/yyxx/eyuangame/core/impl/login/UserSignInImpl.kt

@@ -38,6 +38,7 @@ class UserSignInImpl constructor(val activity: LoginActivity, private val callba
 
     private var fbCallback: CallbackManager? = null
     private var googleSignInClient: GoogleSignInClient? = null
+    private var loginLoadingDialog: ScaleLoadingDialog? = null
 
     init {
         this.fbCallback = CallbackManager.Factory.create()
@@ -150,12 +151,14 @@ class UserSignInImpl constructor(val activity: LoginActivity, private val callba
 
     fun userRegister(context: Context, userName: String, pwd: String) {
         try {
+            showLoadingDialog(context)
             val registerParams = JSONObject()
             registerParams.put("login_type", LoginType.TYPE_ACCOUNT_LOGIN)
             registerParams.put("uname", userName)
             registerParams.put("pwd", pwd)
             SdkRequest.instance.registerUser(context, registerParams, object : IRequestCallback {
                 override fun onResponse(resultInfo: ResultInfo) {
+                    hideLoadingDialog()
                     if (resultInfo.code == 1 && !TextUtils.isEmpty(resultInfo.data)) {
                         try {
                             val jsonObject = JSONObject(resultInfo.data)
@@ -185,14 +188,16 @@ class UserSignInImpl constructor(val activity: LoginActivity, private val callba
             })
         } catch (e: Exception) {
             e.printStackTrace()
+            hideLoadingDialog()
             callback.onFailed("用户注册异常")
         }
-
     }
 
     private fun userLoginVerify(context: Context, loginParams: JSONObject) {
+        showLoadingDialog(context)
         SdkRequest.instance.userLoginVerify(context, loginParams, object : IRequestCallback {
             override fun onResponse(resultInfo: ResultInfo) {
+                hideLoadingDialog()
                 if (resultInfo.code == 1 && !TextUtils.isEmpty(resultInfo.data)) {
                     try {
                         val jsonObject = JSONObject(resultInfo.data)
@@ -220,11 +225,31 @@ class UserSignInImpl constructor(val activity: LoginActivity, private val callba
                 } else {
                     callback.onFailed("登录校验异常")
                 }
-
             }
         })
     }
 
+    private fun showLoadingDialog(context: Context) {
+        loginLoadingDialog?.apply {
+            if (isShowing) {
+                dismiss()
+            }
+            loginLoadingDialog = null
+        }
+
+        loginLoadingDialog = ScaleLoadingDialog(context, "")
+        loginLoadingDialog?.show()
+    }
+
+    private fun hideLoadingDialog() {
+        loginLoadingDialog?.apply {
+            if (isShowing) {
+                dismiss()
+            }
+            loginLoadingDialog = null
+        }
+    }
+
     fun onSignInResult(requestCode: Int, resultCode: Int, intent: Intent) {
         fbCallback?.apply {
             onActivityResult(requestCode, resultCode, intent)

+ 3 - 13
library_core/src/main/java/cn/yyxx/eyuangame/core/impl/login/fragment/LauncherFragment.kt

@@ -401,23 +401,13 @@ class LauncherFragment : Fragment(), View.OnClickListener {
                         ToastUtils.toastInfo(requireActivity(), ResUtils.getResString(requireActivity(), "yyxx_tips_pwd_format_error"))
                         return
                     }
-                    loginImpl.showLoadingDialog()
                     loginImpl.userSignInImpl.accountLogin(requireActivity(), userName, pwd)
                 }
                 ClickType.ACTION_CLICK_CHECK -> changeCheck()
                 ClickType.ACTION_CLICK_AGREEMENT -> showAgreementDialog()
-                ClickType.ACTION_GOOGLE_MODE -> {
-                    loginImpl.showLoadingDialog()
-                    loginImpl.userSignInImpl.googleLogin(requireActivity())
-                }
-                ClickType.ACTION_FACEBOOK_MODE -> {
-                    loginImpl.showLoadingDialog()
-                    loginImpl.userSignInImpl.facebookLogin(requireActivity())
-                }
-                ClickType.ACTION_GUEST_MODE -> {
-                    loginImpl.showLoadingDialog()
-                    loginImpl.userSignInImpl.guestLogin(requireActivity())
-                }
+                ClickType.ACTION_GOOGLE_MODE -> loginImpl.userSignInImpl.googleLogin(requireActivity())
+                ClickType.ACTION_FACEBOOK_MODE -> loginImpl.userSignInImpl.facebookLogin(requireActivity())
+                ClickType.ACTION_GUEST_MODE -> loginImpl.userSignInImpl.guestLogin(requireActivity())
             }
         }
     }

+ 0 - 1
library_core/src/main/java/cn/yyxx/eyuangame/core/impl/login/fragment/RegisterFragment.kt

@@ -175,7 +175,6 @@ class RegisterFragment : Fragment(), View.OnClickListener {
                             ToastUtils.toastInfo(requireActivity(), ResUtils.getResString(requireActivity(), "yyxx_tips_pwd_format_error"))
                             return
                         }
-                        loginImpl.showLoadingDialog()
                         loginImpl.userSignInImpl.userRegister(requireActivity(), userName, pwd)
                     } catch (e: JSONException) {
                         e.printStackTrace()

+ 0 - 1
library_core/src/main/java/cn/yyxx/eyuangame/core/network/VolleyRequest.kt

@@ -45,7 +45,6 @@ object VolleyRequest {
             val obj = JSONObject()
             obj.put("p", p)
             obj.put("ts", rawKey)
-            Logger.d(obj.toString())
             //TODO 拉起登录接口时会莫名其妙ANR,后续再排查
 //            val json = SdkDrive.invokeJob(context, jsonObject.toString())
 //            val obj = JSONObject(json)

+ 1 - 1
library_core/src/main/java/cn/yyxx/eyuangame/core/ui/dialog/ForgetPwdDialog.kt

@@ -94,7 +94,7 @@ class ForgetPwdDialog(context: Context, private val isLandscape: Boolean, privat
             //默认4个地区
             areaList.add("86")
             //香港
-            areaList.add("862")
+            areaList.add("852")
             //澳门
             areaList.add("853")
             //台湾

+ 0 - 7
library_core/src/main/java/cn/yyxx/eyuangame/core/ui/dialog/ScaleLoadingDialog.kt

@@ -59,13 +59,6 @@ class ScaleLoadingDialog constructor(context: Context, desc: String) : Dialog(co
         setOnKeyListener(this)
     }
 
-
-    override fun dismiss() {
-        super.dismiss()
-        loadingView?.cancel()
-        layout.removeAllViews()
-    }
-
     override fun onKey(dialog: DialogInterface?, keyCode: Int, event: KeyEvent): Boolean {
         return keyCode == KeyEvent.KEYCODE_BACK && event.repeatCount == 0
     }

+ 4 - 4
library_core/src/main/java/cn/yyxx/eyuangame/core/utils/TimeDownUtils.kt

@@ -9,7 +9,7 @@ import cn.yyxx.eyuangame.base.utils.Logger
  */
 object TimeDownUtils {
 
-    private var isRunning = false
+    var isRunning = false
     private var isCancel = false
 
     @Volatile
@@ -44,9 +44,9 @@ object TimeDownUtils {
         }
     }
 
-    fun isRunning(): Boolean {
-        return isRunning
-    }
+//    fun isRunning(): Boolean {
+//        return isRunning
+//    }
 
 
     interface TimeCallback {

BIN=BIN
libs/yyxx_support_1.0.1.jar


+ 0 - 1
settings.gradle

@@ -3,4 +3,3 @@ include ':demo'
 include ':library_base'
 //include ':library_comm'
 include ':library_core'
-