From d47ec135462b02c12ff67586611537a8609e040c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Thu, 16 Apr 2026 15:06:21 +0800 Subject: [PATCH] =?UTF-8?q?fix(chat):=20=E4=BF=AE=E5=A4=8D=E8=81=8A?= =?UTF-8?q?=E5=A4=A9=E6=B6=88=E6=81=AF=E8=A7=A3=E6=9E=90=E5=92=8C=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E6=9E=84=E5=BB=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将StringBuilder替换为String变量以避免清空问题 - 添加JSON数据前缀处理,移除"data:"前缀 - 修复字符串拼接方式,使用+=操作符替代appendLine - 优化结果发布逻辑,直接发布字符串而非toString()调用 --- .../com/nova/brain/glass/viewmodel/ChatVM.kt | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/nova/brain/glass/viewmodel/ChatVM.kt b/app/src/main/java/com/nova/brain/glass/viewmodel/ChatVM.kt index 9428a9a..9caa68e 100644 --- a/app/src/main/java/com/nova/brain/glass/viewmodel/ChatVM.kt +++ b/app/src/main/java/com/nova/brain/glass/viewmodel/ChatVM.kt @@ -20,28 +20,29 @@ class ChatVM : BaseViewModel() { HttpManager.getApi(Service::class.java).chat(ChatData("我的代办任务有哪些?")) .subscribeOn(Schedulers.io()) .subscribe({ body -> - val sb = StringBuilder() + var sb = "" body.charStream().buffered().use { reader -> try { var line: String? while (reader.readLine().also { line = it } != null) { val l = line!! if (l.isNotEmpty()) { - val model = GsonImplHelp.get().toObject(l, ChatModel::class.java) + val json = if (l.startsWith("data:")) l.removePrefix("data:").trim() else l + val model = GsonImplHelp.get().toObject(json, ChatModel::class.java) if (t != model.type) { - sb.clear() + sb = "" } t = model.type if (model.type == "string") { val model1 = - GsonImplHelp.get().toObject(l, ChatModel1::class.java) - sb.appendLine(model1.data) + GsonImplHelp.get().toObject(json, ChatModel1::class.java) + sb+=model1.data } else { val model2 = - GsonImplHelp.get().toObject(l, ChatModel2::class.java) - sb.appendLine(model2.data.content) + GsonImplHelp.get().toObject(json, ChatModel2::class.java) + sb+=model2.data.content } - result.postValue(sb.toString()) + result.postValue(sb) } } } catch (e: Exception) {