我正在制作一个android聊天应用程序,它具有从应用程序中选择和发送多个图像的功能。我使用rxjava在后台线程中运行send函数。
我从画廊里取了多张照片放进去 for
循环一个接一个,如下面的代码所示。我面临的问题是图像的顺序没有得到保存。
这是我用来发送多个图像的代码。
public void onMessageSent(String messageText, ArrayList<Attachment> attachments) {
if (!ObjectUtils.isEmpty(attachments)) {
Stream.of(attachments)
.forEach(attachment -> chatInteractor.sendAttachment(mConversationId, attachment, messageParticipants, quoteMessageId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(MapUtils::dummyfunction, errorHandler::logErrorViaInstance));
}
}
``` `messageText` 包含必须与图像一起发送的消息,即arraylist `attatchments` 包含所有图像及其数据和 `chatInteractor.sendAttachment` 是一个 `public` 具有返回类型的函数 `Maybe<Message>` .
图像的顺序保持在 `attatchments` . 但是当所有图像都在后台线程中发送时 `Schedulers.io()` ,有些图像发送得早一些,有些发送得晚一些。
如何维持秩序?我应该做哪些代码更改?
我试着换衣服 `subscribeOn` 至 `Schedulers.single()` 以及 `Schedulers.trampoline()` ,但他们都没帮上忙。
1条答案
按热度按时间mznpcxlj1#
直接使用rxjava进行一系列上传: