前言
我们在调用一些AI的接口的时候都是流式输出,这里就说一下流式接口怎样调用。
Service定义
定义接口的时候要添加@Streaming
注解
1 | import okhttp3.ResponseBody |
调用
同步调用
1 | viewModelScope.launch { |
异步调用
在使用 Retrofit 进行网络请求时,call.enqueue()
方法的行为是:
- 请求的执行(网络操作)会自动在后台线程中进行,不会阻塞主线程(UI 线程)
- 回调方法(
onResponse()
和onFailure()
)则会在主线程(UI 线程) 中执行
示例
1 | fun extractData(rawData: String): String? { |
高频变化渲染卡顿
如果数据变化的太快,UI渲染就会卡顿,这里把数据转成流,添加防抖机制来解决卡顿问题。
1 | val _resultMdStr = mutableStateOf("") |