[Modify]修复firebase上面的崩溃

This commit is contained in:
wushaocheng
2023-08-08 18:59:58 +08:00
parent edcabd157d
commit b57e7afb6d
3 changed files with 51 additions and 24 deletions

View File

@@ -222,7 +222,7 @@ class RoomEffectBoxView @JvmOverloads constructor(
if (disposableDatingAll == null || messagesDatingAll.size == 1) {
disposableDatingAll = Observable.interval(0, 3, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesDatingAll.size > 0 }
.takeWhile { messagesDatingAll.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flDatingAllNotify.childCount == 0) {
showDatingAllNotify(
@@ -304,7 +304,7 @@ class RoomEffectBoxView @JvmOverloads constructor(
if (boxDisposable == null || messagesBox.size == 1) {
boxDisposable = Observable.interval(0, PERIOD.toLong(), TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesBox.size > 0 }
.takeWhile { messagesBox.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flBoxNotify.childCount == 0) {
showBoxNotify(
@@ -363,7 +363,7 @@ class RoomEffectBoxView @JvmOverloads constructor(
if (boxSVGADisposable == null || messagesBoxSVGA.size == 1) {
boxSVGADisposable = Observable.interval(0, PERIOD.toLong(), TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesBoxSVGA.size > 0 }
.takeWhile { messagesBoxSVGA.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flSvgaBoxNotify.childCount == 0) {
showBoxNotifyBySVGA(
@@ -449,7 +449,7 @@ class RoomEffectBoxView @JvmOverloads constructor(
if (radishDisposable == null || messagesRadish.size == 1) {
radishDisposable = Observable.interval(0, PERIOD.toLong(), TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesRadish.size > 0 }
.takeWhile { messagesRadish.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flRadishNotify.childCount == 0) {
showRadishNotify(messagesRadish.removeAt(0))
@@ -529,7 +529,7 @@ class RoomEffectBoxView @JvmOverloads constructor(
if (radishSVGADisposable == null || messagesRadishSVGA.size == 1) {
radishSVGADisposable = Observable.interval(0, PERIOD.toLong(), TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesRadishSVGA.size > 0 }
.takeWhile { messagesRadishSVGA.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flSvgaRadishNotify.childCount == 0) {
showRadishNotifyBySVGA(messagesRadishSVGA.removeAt(0))
@@ -617,7 +617,7 @@ class RoomEffectBoxView @JvmOverloads constructor(
if (disposableGiftCompound == null || messagesGiftCompound.size == 1) {
disposableGiftCompound = Observable.interval(0, PERIOD.toLong(), TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesGiftCompound.size > 0 }
.takeWhile { messagesGiftCompound.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flGiftCompoundNotify.childCount == 0) {
showGiftCompoundNotify(messagesGiftCompound.removeAt(0))
@@ -693,7 +693,7 @@ class RoomEffectBoxView @JvmOverloads constructor(
if (disposableMemberIn == null || messagesMemberIn.size == 1) {
disposableMemberIn = Observable.interval(0, 6, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesMemberIn.size > 0 }
.takeWhile { messagesMemberIn.size > 0 && !mContext.isDestroyed() }
.subscribe {
showMemberInNotify(messagesMemberIn.removeAt(0))
}
@@ -825,7 +825,7 @@ class RoomEffectBoxView @JvmOverloads constructor(
if (disposableLevelUp == null || messagesLevelUp.size == 1) {
disposableLevelUp = Observable.interval(0, 6, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesLevelUp.size > 0 }
.takeWhile { messagesLevelUp.size > 0 && !mContext.isDestroyed() }
.subscribe {
showLevelUpNotify(messagesLevelUp.removeAt(0))
}
@@ -1124,7 +1124,7 @@ class RoomEffectBoxView @JvmOverloads constructor(
if (disposableRoomPK == null || messagesRoomPK.size == 1) {
disposableRoomPK = Observable.interval(0, 4, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesRoomPK.size > 0 }
.takeWhile { messagesRoomPK.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flRoomPkNotify.childCount == 0) {
showRoomPKNotify(messagesRoomPK.removeAt(0))
@@ -1170,7 +1170,7 @@ class RoomEffectBoxView @JvmOverloads constructor(
if (disposableSingleRoomPK == null || messagesSingleRoomPK.size == 1) {
disposableSingleRoomPK = Observable.interval(0, 4, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesSingleRoomPK.size > 0 }
.takeWhile { messagesSingleRoomPK.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flSingleRoomPkNotify.childCount == 0) {
showSingleRoomPKNotify(messagesSingleRoomPK.removeAt(0))

View File

@@ -253,7 +253,7 @@ class RoomEffectView @JvmOverloads constructor(
if (playDisposable == null || messagesPlay.size == 1) {
playDisposable = Observable.interval(0, PERIOD.toLong(), TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesPlay.size > 0 }
.takeWhile { messagesPlay.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flPlayNotify.childCount == 0) {
when (messagesPlay[0].event) {
@@ -262,9 +262,21 @@ class RoomEffectView @JvmOverloads constructor(
isPlayAnim = true
val isPlay = onPlayAnimCallback?.invoke() ?: false
if (isPlay) {
margin(binding.clNotify, 0, UIUtil.dip2px(context, 180.0), 0, 0)
margin(
binding.clNotify,
0,
UIUtil.dip2px(context, 180.0),
0,
0
)
} else {
margin(binding.clNotify, 0, UIUtil.dip2px(context, 60.0), 0, 0)
margin(
binding.clNotify,
0,
UIUtil.dip2px(context, 60.0),
0,
0
)
}
showBoxNotify(
messagesPlay.removeAt(0)
@@ -276,9 +288,21 @@ class RoomEffectView @JvmOverloads constructor(
isPlayAnim = true
val isPlay = onPlayAnimCallback?.invoke() ?: false
if (isPlay) {
margin(binding.clNotify, 0, UIUtil.dip2px(context, 180.0), 0, 0)
margin(
binding.clNotify,
0,
UIUtil.dip2px(context, 180.0),
0,
0
)
} else {
margin(binding.clNotify, 0, UIUtil.dip2px(context, 60.0), 0, 0)
margin(
binding.clNotify,
0,
UIUtil.dip2px(context, 60.0),
0,
0
)
}
showBoxNotifyBySVGA(messagesPlay.removeAt(0))
}
@@ -435,7 +459,7 @@ class RoomEffectView @JvmOverloads constructor(
if (disposableDatingAll == null || messagesDatingAll.size == 1) {
disposableDatingAll = Observable.interval(0, 3, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesDatingAll.size > 0 }
.takeWhile { messagesDatingAll.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flDatingAllNotify.childCount == 0) {
showDatingAllNotify(
@@ -852,7 +876,7 @@ class RoomEffectView @JvmOverloads constructor(
if (radishDisposable == null || messagesRadish.size == 1) {
radishDisposable = Observable.interval(0, PERIOD.toLong(), TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesRadish.size > 0 }
.takeWhile { messagesRadish.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flRadishNotify.childCount == 0) {
showRadishNotify(messagesRadish.removeAt(0))
@@ -932,7 +956,7 @@ class RoomEffectView @JvmOverloads constructor(
if (radishSVGADisposable == null || messagesRadishSVGA.size == 1) {
radishSVGADisposable = Observable.interval(0, PERIOD.toLong(), TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesRadishSVGA.size > 0 }
.takeWhile { messagesRadishSVGA.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flSvgaRadishNotify.childCount == 0) {
showRadishNotifyBySVGA(messagesRadishSVGA.removeAt(0))
@@ -1020,7 +1044,7 @@ class RoomEffectView @JvmOverloads constructor(
if (disposableGiftCompound == null || messagesGiftCompound.size == 1) {
disposableGiftCompound = Observable.interval(0, PERIOD.toLong(), TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesGiftCompound.size > 0 }
.takeWhile { messagesGiftCompound.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flGiftCompoundNotify.childCount == 0) {
showGiftCompoundNotify(messagesGiftCompound.removeAt(0))
@@ -1096,7 +1120,7 @@ class RoomEffectView @JvmOverloads constructor(
if (disposableMemberIn == null || messagesMemberIn.size == 1) {
disposableMemberIn = Observable.interval(0, 6, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesMemberIn.size > 0 }
.takeWhile { messagesMemberIn.size > 0 && !mContext.isDestroyed() }
.subscribe {
showMemberInNotify(messagesMemberIn.removeAt(0))
}
@@ -1228,7 +1252,7 @@ class RoomEffectView @JvmOverloads constructor(
if (disposableLevelUp == null || messagesLevelUp.size == 1) {
disposableLevelUp = Observable.interval(0, 6, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesLevelUp.size > 0 }
.takeWhile { messagesLevelUp.size > 0 && !mContext.isDestroyed() }
.subscribe {
showLevelUpNotify(messagesLevelUp.removeAt(0))
}
@@ -1527,7 +1551,7 @@ class RoomEffectView @JvmOverloads constructor(
if (disposableRoomPK == null || messagesRoomPK.size == 1) {
disposableRoomPK = Observable.interval(0, 4, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesRoomPK.size > 0 }
.takeWhile { messagesRoomPK.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flRoomPkNotify.childCount == 0) {
showRoomPKNotify(messagesRoomPK.removeAt(0))
@@ -1573,7 +1597,7 @@ class RoomEffectView @JvmOverloads constructor(
if (disposableSingleRoomPK == null || messagesSingleRoomPK.size == 1) {
disposableSingleRoomPK = Observable.interval(0, 4, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.takeWhile { messagesSingleRoomPK.size > 0 }
.takeWhile { messagesSingleRoomPK.size > 0 && !mContext.isDestroyed() }
.subscribe {
if (binding.flSingleRoomPkNotify.childCount == 0) {
showSingleRoomPKNotify(messagesSingleRoomPK.removeAt(0))
@@ -1662,6 +1686,7 @@ class RoomEffectView @JvmOverloads constructor(
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
playDisposable?.dispose()
boxDisposable?.dispose()
disposableLuckyGift?.dispose()
disposableMemberIn?.dispose()

View File

@@ -398,7 +398,9 @@ public class PublicChatHallInputPanel implements IEmoticonSelectedListener, IAud
switchToTextButtonInInputBar.setVisibility(View.GONE);
switchToAudioButtonInInputBar.setVisibility(View.GONE);
messageInputBar.setVisibility(View.VISIBLE);
if(messageInputBar != null) {
messageInputBar.setVisibility(View.VISIBLE);
}
if (needShowInput) {
uiHandler.postDelayed(showTextRunnable, SHOW_LAYOUT_DELAY);