没登录点赞时,多次拉起QQ登录不登录,最后一次登录会出现多次请求

来源:7-8 帖子点赞和评论点赞能力实现

JefferyzZ

2024-11-30

                commentBinding.commentLikeStatus.setOnClickListener {
                    lifecycleOwner.lifecycleScope.launch {
                        UserManager.loginIfNeed()
                        UserManager.getUser().collectLatest {
                            // TODO: 这个日志方便查看添加的 
                            Log.i(TAG, "[${coroutineContext[Job].hashCode()}] bindTopComment: expiresTime=${it.expiresTime}")
                            val apiResult = ApiService.getService()
                                .toggleCommentLike(commentId, itemId, it.userId)
                            apiResult.body?.run {
                                val ugc = topComment.getUgcOrDefault()
                                ugc.hasLiked = this.getAsJsonPrimitive("hasLiked").asBoolean
                                ugc.likeCount = this.getAsJsonPrimitive("likeCount").asInt
                                notifyItemChanged(layoutPosition, topComment)
                            }
                        }
                    }
                }

就拿神评的点赞做演示,我加了一个日志方便查看

FeedAdapter              I  [212085129] bindTopComment: expiresTime=0
FeedAdapter              I  [202305710] bindTopComment: expiresTime=0
FeedAdapter              I  [15732329] bindTopComment: expiresTime=0
FeedAdapter              I  [20979342] bindTopComment: expiresTime=0
FeedAdapter              I  [212085129] bindTopComment: expiresTime=1738127318817
FeedAdapter              I  [202305710] bindTopComment: expiresTime=1738127318817
FeedAdapter              I  [15732329] bindTopComment: expiresTime=1738127318817
FeedAdapter              I  [20979342] bindTopComment: expiresTime=1738127318817

如上最后一次登录成功,会发起多次请求,我初步看是每次点击都发起了一次lifecycleOwner.lifecycleScope.launch,请问老师有没很好的办法解决这个bug😥

写回答

1回答

LovelyChubby

2024-12-03

注册之前先解除注册obersever看看
0
1
JefferyzZ
我看了工程中像这样的代码非常多,有没有比较优雅的方式,不然每个地方都进行一次这样判断是否显得代码比较冗余。。
2024-12-04
共1条回复

全新版Jetpack进阶提升,系统性落地短视频App

全新版Jetpack进阶提升,系统性落地短视频App

345 学习 · 117 问题

查看课程