Merge remote-tracking branch 'origin/release' into dev

This commit is contained in:
juntao
2022-02-22 09:37:54 +08:00
6 changed files with 49 additions and 36 deletions

View File

@ -125,10 +125,14 @@ class DefaultJsApi(var context: Context) {
handler.complete(false)
}
})
LoginHelper.unregisterCallback()
}
override fun onLoginFailure(loginType: LoginTag, error: String) {
handler.complete(false)
LoginHelper.unregisterCallback()
}
})
}

View File

@ -1768,8 +1768,8 @@ object DirectUtils {
fun directToSuggestion(
context: Context,
type: SuggestType,
suggestHintType: String,
content: String,
suggestHintType: String? = null,
content: String? = null,
isQaFeedback: Boolean = false,
qaContentId: String = ""
) {
@ -1788,8 +1788,8 @@ object DirectUtils {
fun directToSuggestion(
context: Context,
type: SuggestType,
suggestHintType: String,
content: String,
suggestHintType: String? = null,
content: String? = null,
game: SimpleGameEntity,
platform: String = ""
) {

View File

@ -22,8 +22,6 @@ import com.tencent.tauth.Tencent
import com.tencent.tauth.UiError
import org.json.JSONException
import org.json.JSONObject
import java.lang.ref.WeakReference
/**
* 第三方登录辅助类
@ -42,7 +40,7 @@ object LoginHelper {
private var mQqLoginListener: IUiListener
private var mAccessToken: Oauth2AccessToken? = null // weibo
private var mLoginCallback: WeakReference<LoginCallback>? = null
private var mLoginCallback: LoginCallback? = null
init {
val context = HaloApp.getInstance().application.applicationContext
@ -70,11 +68,11 @@ object LoginHelper {
)
content.put("access_token", o.getString("access_token"))
mLoginCallback?.get()?.onLoginSuccess(LoginTag.qq, content) // 回调QQ登录成功
mLoginCallback?.onLoginSuccess(LoginTag.qq, content) // 回调QQ登录成功
} catch (e: JSONException) {
val errorString = "QQ登录数据回调异常$e"
mLoginCallback?.get()?.onLoginFailure(LoginTag.qq, errorString) // 回调QQ登录失败
mLoginCallback?.onLoginFailure(LoginTag.qq, errorString) // 回调QQ登录失败
Utils.log(errorString)
e.printStackTrace()
@ -83,7 +81,7 @@ object LoginHelper {
}
override fun onCancel() {
mLoginCallback?.get()?.onLoginFailure(LoginTag.qq, "登录取消")
mLoginCallback?.onLoginFailure(LoginTag.qq, "登录取消")
Utils.log("QQ 登录取消")
}
@ -92,7 +90,7 @@ object LoginHelper {
}
override fun onError(p0: UiError?) {
mLoginCallback?.get()?.onLoginFailure(LoginTag.qq, "登录失败")
mLoginCallback?.onLoginFailure(LoginTag.qq, "登录失败")
Utils.log("QQ 登录失败")
}
}
@ -110,22 +108,22 @@ object LoginHelper {
@JvmStatic
fun onWechatLoginSuccess(content: JSONObject) {
mLoginCallback?.get()?.onLoginSuccess(LoginTag.wechat, content)
mLoginCallback?.onLoginSuccess(LoginTag.wechat, content)
}
@JvmStatic
fun onWechatLoginFailure(error: String) {
mLoginCallback?.get()?.onLoginFailure(LoginTag.wechat, error)
mLoginCallback?.onLoginFailure(LoginTag.wechat, error)
}
@JvmStatic
fun onDouYinLoginSuccess(content: JSONObject) {
mLoginCallback?.get()?.onLoginSuccess(LoginTag.douyin, content)
mLoginCallback?.onLoginSuccess(LoginTag.douyin, content)
}
@JvmStatic
fun onDouYinLoginFailure(error: String) {
mLoginCallback?.get()?.onLoginFailure(LoginTag.douyin, error)
mLoginCallback?.onLoginFailure(LoginTag.douyin, error)
}
@JvmStatic
@ -136,7 +134,7 @@ object LoginHelper {
// QQ登录
@JvmStatic
fun loginWithQQ(loginCallback: LoginCallback, activity: Activity) {
mLoginCallback = WeakReference(loginCallback)
mLoginCallback = loginCallback
if (!mTencent.isSessionValid) {
Utils.log("QQLogin")
mTencent.login(activity, "all", mQqLoginListener)
@ -153,7 +151,7 @@ object LoginHelper {
// 微信登录
@JvmStatic
fun loginWithWechat(loginCallback: LoginCallback) {
mLoginCallback = WeakReference(loginCallback)
mLoginCallback = loginCallback
val register = mIWXAPI.registerApp(Config.WECHAT_APPID)
val req = SendAuth.Req()
@ -180,7 +178,7 @@ object LoginHelper {
}
mWBAPI = WBAPIFactory.createWBAPI(context) //初始化微博分享
mLoginCallback = WeakReference(loginCallback)
mLoginCallback = loginCallback
mWBAPI.registerApp(
context,
AuthInfo(context, Config.WEIBO_APPKEY, "http://www.sina.com", WEIBO_SCOPE)
@ -208,19 +206,18 @@ object LoginHelper {
)
content.put("refresh_token", token.refreshToken)
// content.put("refresh_token_expire", Utils.getTime(mContext) + 86400 * 30); // refresh_token 有效期30天
mLoginCallback?.get()?.onLoginSuccess(LoginTag.weibo, content)// 微博 登录回调
mLoginCallback?.onLoginSuccess(LoginTag.weibo, content)// 微博 登录回调
}
}
}
override fun onError(error: com.sina.weibo.sdk.common.UiError?) {
mLoginCallback?.get()?.onLoginFailure(LoginTag.weibo, "微博登录需要客户端支持,请先安装微博")
mLoginCallback?.onLoginFailure(LoginTag.weibo, "微博登录需要客户端支持,请先安装微博")
}
override fun onCancel() {
mLoginCallback?.get()?.onLoginFailure(LoginTag.weibo, "取消授权")
mLoginCallback?.onLoginFailure(LoginTag.weibo, "取消授权")
}
})
// 第一次启动本应用AccessToken 不可用
@ -240,6 +237,14 @@ object LoginHelper {
// douYinOpenApi.authorize(request)
}
/**
* 移除登录 callback 引用,避免内存泄漏
*/
@JvmStatic
fun unregisterCallback() {
mLoginCallback = null
}
interface LoginCallback {
fun onLoginSuccess(loginType: LoginTag, jsonContent: JSONObject)

View File

@ -16,7 +16,6 @@ import android.net.Uri
import android.os.Bundle
import android.text.TextUtils
import android.util.Base64
import android.util.DisplayMetrics
import android.util.SparseArray
import android.view.View
import android.view.ViewGroup
@ -58,9 +57,11 @@ import com.github.piasy.biv.view.BigImageView
import com.github.piasy.biv.view.FrescoImageViewFactory
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import java.io.*
import java.io.BufferedOutputStream
import java.io.File
import java.io.FileOutputStream
import java.util.*
import kotlin.collections.ArrayList
import kotlin.math.abs
import kotlin.math.roundToInt
/**
@ -172,9 +173,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
mIndicatorTv.text = String.format("%d/%d", mInitialPosition + 1, mUrlList!!.size)
// init slide
val outMetrics = DisplayMetrics()
windowManager?.defaultDisplay?.getMetrics(outMetrics)
val widthPixels = outMetrics.widthPixels
val widthPixels = DisplayUtils.getScreenWidth()
mLimitWidth = if (NetworkUtils.isWifiOr4GConnected(this)) {
widthPixels * 2
} else {
@ -417,8 +416,6 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
}
private fun finishWithAnimation(fadeOnly: Boolean) {
updateOriginPosition(mViewPager.currentItem)
val animatorSet = AnimatorSet()
val translateXAnimator = ValueAnimator.ofFloat(0F, mTranslationX).apply {
@ -469,7 +466,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
}
}
private fun shouldResize() = !(mImageRatio == mViewRatio || scaleWithoutResize())
private fun shouldResize() = !(abs(mImageRatio - mViewRatio) <= 0.1F || scaleWithoutResize())
private fun justChangeBoundsAndTransform() = mImageRatio < mViewRatio && mIsFromImageContainerView && adapter?.count == 1
@ -608,8 +605,6 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
}
private fun performExitAnimation(view: DraggableBigImageView, scale: Float, fadeOnly: Boolean) {
updateOriginPosition(mViewPager.currentItem)
val finalScale = mOriginWidth / mTargetWidth
val finalTranslationX = mOriginLeft - (1 - finalScale) * mTargetWidth / 2
val finalTranslationY = mOriginTop - ((1 - finalScale) * mTargetHeight + (mTargetHeight * finalScale - mOriginHeight)) / 2
@ -726,7 +721,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
return ObjectAnimator.ofFloat(startHeight.toFloat(), endHeight.toFloat()).apply {
addUpdateListener {
sceneRoot.findViewById<BigImageView>(R.id.viewimage_iv_show)?.ssiv?.run {
if (scaleWithoutResize()) {
if (abs(mImageRatio - mViewRatio) > 0.1F && scaleWithoutResize()) {
maxScale = scale
setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP)
}
@ -768,6 +763,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
}
imageView.setDragListener(object : DraggableBigImageView.DragListener {
override fun onRelease(draggableBigImageView: DraggableBigImageView, scale: Float) {
updateOriginPosition(mViewPager.currentItem)
performExitAnimation(draggableBigImageView, scale, isFadeOnly())
}
@ -812,7 +808,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
// }
// })
ssiv.setOnClickListener {
finishWithAnimation(isFadeOnly())
onBackPressed()
}
}
}
@ -875,6 +871,7 @@ class ImageViewerActivity : BaseActivity(), OnPageChangeListener {
private fun isFadeOnly() = mViewPager.currentItem >= mOriginLeftList?.size ?: 0 || mOriginLeft == 0 || mOriginTop == 0
override fun onBackPressed() {
updateOriginPosition(mViewPager.currentItem)
finishWithAnimation(isFadeOnly())
}

View File

@ -447,6 +447,11 @@ public class LoginFragment
}
}
@Override
public void onDestroy() {
super.onDestroy();
LoginHelper.unregisterCallback();
}
private void login(JSONObject content, LoginTag loginTag) {
if (loginTag.equals(LoginTag.phone)) {

View File

@ -222,7 +222,9 @@ class HomeFragment : LazyFragment() {
override fun onDestroy() {
super.onDestroy()
mScrollCalculatorHelper.currentPlayer?.release()
if (::mScrollCalculatorHelper.isInitialized) {
mScrollCalculatorHelper.currentPlayer?.release()
}
}
private fun handleAutoScroll(resumeScroll: Boolean) {