【发布时间】:2016-09-02 15:17:53
【问题描述】:
我正在为 Android 创建一个应用程序。我正在使用领域作为数据库。领域在整个应用程序中运行良好。现在我想从“NotificationExtender”类中插入一些数据(这将有助于接收和自定义一个信号通知)。这导致 outOfMemory 错误我该如何处理。
我的示例代码: 在我的通知类中,我正在这样做
RealmLibrary.insertMessageToDBFromNotificationReceiver(
jsonObject.getString("data"),
jsonObject.getString("groupKey"),
jsonObject.getString("groupKey"),
mContext);
在我的 RealmLibrary 类中:
Realm realm = getRealm(applicationContext);
realm.beginTransaction();
ChatMessages chatmsg = realm.where(ChatMessages.class)
.equalTo("gUid", gUID).findFirst();
int count = 0;
if (chatmsg == null) {
// Create an new object
chatmsg = realm.createObject(ChatMessages.class);
count = 1;
chatmsg.setgUid(gUID);
} else {
}
realm.commitTransaction();
也是我的 getRealm 方法:
public static Realm getRealm(Context context) {
return Realm.getDefaultInstance();
}
我该如何处理这个内存不足。请任何人告诉我哪个代码导致错误。哪个是效率不高的代码..
注意:这只是一个示例代码。如果需要任何详细信息,请留下您的 cmets。
【问题讨论】:
-
看看logcat可能会很有用
-
好的,请稍等。我会更新问题
-
你绝对没有在后台线程上关闭你的 Realm 实例。如果 gUID 是主键,你也应该使用
chatmsg = realm.createObject(ChatMessages.class, gUID);。 -
@EpicPandaForce 不,我没有使用主键。但是是的,我没有关闭数据库如何关闭数据库?领域.close() ?我也试过这个。但是没用
-
你have to close all opened instances on the background thread。通常我每个线程只打开一个实例。