diff --git a/app/src/main/java/com/gh/common/util/Extensions.kt b/app/src/main/java/com/gh/common/util/Extensions.kt index 9ae83d3780..a16b5243de 100644 --- a/app/src/main/java/com/gh/common/util/Extensions.kt +++ b/app/src/main/java/com/gh/common/util/Extensions.kt @@ -333,6 +333,15 @@ fun throwExceptionInDebug(message: String = "", predicate: Boolean = true) { } } +/** + * 在自动打包的包里弹 toast + */ +fun toastInInternalRelease(content: String) { + if (BuildConfig.BUILD_TIME != 0L) { + Utils.toast(HaloApp.getInstance(), content) + } +} + /** * 主动抛出异常 */ @@ -454,6 +463,7 @@ fun Float.sp2px(): Int { return (this * scale + 0.5f).toInt() } + /** * PopupWindow 自动适配方向 * 弹出与锚点右对齐 @@ -577,6 +587,19 @@ fun TextView.setTextChangedListener(action: (s: CharSequence, start: Int, before }) } +/** + * ArrayList related + */ +fun ArrayList.safelyGetInRelease(index: Int): T? { + return if (index >= size) { + throwExceptionInDebug("这里触发了数组越界,请检查") + toastInInternalRelease("这个操作可能触发闪退,请确定复现方式并联系开发处理") + null + } else { + this[index] + } +} + /** * 拦截 TextView 中的 Url Span,用应用内页面的形式打开链接 * @param shrankText 未展开时的文字 diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt index 0786ca9217..e466678214 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt @@ -236,7 +236,7 @@ class GameFragmentAdapter(context: Context, DataCollectionUtils.uploadClick(mContext, subjectData?.name + "-列表", "游戏-专题", gameEntity.name) GameDetailActivity.startGameDetailActivity(mContext, gameEntity, StringUtils.buildString("(游戏-专题:", subjectData?.name, "-列表[", (subjectData?.position).toString(), "])"), - listExposureEventList[snapPosition]) + listExposureEventList.safelyGetInRelease(snapPosition)) } val verticalSlide = mItemDataList[position].verticalSlide!! diff --git a/app/src/main/java/com/gh/gamecenter/home/LegacyHomeFragmentAdapterAssistant.kt b/app/src/main/java/com/gh/gamecenter/home/LegacyHomeFragmentAdapterAssistant.kt index 8c0dfba0a9..78d2c7c3ca 100644 --- a/app/src/main/java/com/gh/gamecenter/home/LegacyHomeFragmentAdapterAssistant.kt +++ b/app/src/main/java/com/gh/gamecenter/home/LegacyHomeFragmentAdapterAssistant.kt @@ -229,6 +229,7 @@ class LegacyHomeFragmentAdapterAssistant(private var mContext: Context, private fun bindVerticalSlide(holder: GameVerticalSlideViewHolder, item: LegacyHomeItemData) { if (mMakeItemBackgroundTransparent) holder.itemView.setBackgroundColor(ContextCompat.getColor(mContext, R.color.transparent)) + // TODO 曝光复用有问题!!! val binding = holder.binding val verticalSlide = item.verticalSlide!! val exposureEventList = arrayListOf() @@ -239,7 +240,7 @@ class LegacyHomeFragmentAdapterAssistant(private var mContext: Context, DataCollectionUtils.uploadClick(mContext, subjectData?.name + "-列表", "游戏-专题", gameEntity.name) GameDetailActivity.startGameDetailActivity(mContext, gameEntity, StringUtils.buildString("(游戏-专题:", subjectData?.name, "-列表[", (subjectData?.position).toString(), "])"), - listExposureEventList[snapPosition]) + listExposureEventList.safelyGetInRelease(snapPosition)) } holder.bindVerticalSlide(verticalSlide, clickClosure, mMakeItemBackgroundTransparent)