满堂花醉三千客,一剑霜寒十四州。这篇文章主要讲述在循环中使用Realm或在Android中插入列表相关的知识,希望能为你提供帮助。
【在循环中使用Realm或在Android中插入列表】美好的一天。我有一个问题。
首先,在我看来,一个很好的数据库用于存储本地数据,我已经开发了一个社交网络,我在本地和每个应用程序保存消息开始我从服务器下载消息,以便在本地保存它们让我们说当前要使用的会话。 Realm似乎是开箱即用的最佳解决方案但是我遇到了由于Realm事务而阻止我的UI的情况。以下是案例。
?我必须使用UI线程中的Realm对象,否则它将抛出异常,说我需要从我调用的线程访问该对象,因此在这种情况下,来自领域的executeTransactionAsync
将无法正常工作发生在UI线程上
?这是第一次这样的问题,但我想象自己为什么以前不是一个问题,因为我的mesasges不是那么多,现在我有40条消息和哇...领域阻止UI真的很可怕(仅约4秒)这是pathethic。
?我已经尝试运行领域实际事务和我在一个单独的线程中调用的方法,但是这不会有效,因为必须从UI线程访问Realm对象,所以根本没有运气背景线程。
所以,如果有人能取悦,我来这里寻求帮助?
这是领域方法的代码
public void insertMessage(final String userId, final String opponentId, final String message,
final String messageId, final String date,
final String id, final String deliveryStatus,
final String userImage,
final String opponentImage, final String deleteOpponentId,
final String deleteUserId,
final boolean hasGif, final String gifUrl, final boolean animated) {if (!isMessageExist(messageId)) {
handler.post(new Runnable() {
@Override
public void run() {}
});
mRealm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
MessageModel messageModel = realm.createObject(MessageModel.class);
messageModel.setId(id);
messageModel.setMessageId(messageId);
messageModel.setMessage(message);
messageModel.setUserId(userId);
messageModel.setOpponentId(opponentId);
messageModel.setAnimated(animated);
messageModel.setDeliveryStatus(deliveryStatus);
messageModel.setUserImage(userImage);
messageModel.setOpponentImage(opponentImage);
messageModel.setDate(date);
messageModel.setHasGif(hasGif);
messageModel.setGifUrl(gifUrl);
messageModel.setDeleteUserId(deleteUserId);
messageModel.setDeleteOpponentId(deleteOpponentId);
}
});
}}
手柄是
MainLooper
,此时基本上是UI线程我在循环中调用这个方法,我得到了消息数组,就是这样,有什么帮助吗?
推荐阅读
- 我如何使Figma API与Google App脚本API一起使用()
- Android - 线程问题(按钮中的随机字符切换,直到单击按钮)
- Android postdelayed处理程序无法启动运行
- 为什么我需要Android Studio中的GitHub中的Tag()
- 在Bootstrap 4中定义固定宽度input-group-append div
- 如何从图像Android应用程序中提取文本
- Android,无法使用WebView上传图像
- 在Glide for Android中离线时加载已获取的图像
- android减少摄像头捕获图像的文件大小小于500 kb