Android - 在非活动类中使用realm

时间:2016-09-02 05:05:15

标签: android realm

我正在为Android创建一个应用程序。我使用Realm作为数据库。领域在整个应用程序中工作正常。现在我想从“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();

    }

我如何处理这个外出的记忆。请有人告诉我哪个代码会导致错误。哪个是效率不高的代码..

注意:它只是一个示例代码。如果需要任何细节,请留下您的意见。

1 个答案:

答案 0 :(得分:0)

我目前只有49个声望点,所以我不能对此发表评论。只是一个想法(也许这是愚蠢的,告诉我如果是这样,我会删除这个答案),你可能想要添加和使用LeakCanary并检查你是否有一些内存泄漏:

dependencies {
   debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2'
   releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2'
   testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2'
 }

public class ExampleApplication extends Application {

  @Override public void onCreate() {
    super.onCreate();
    LeakCanary.install(this);
  }
}

(如果您的活动未延伸LeakCanary.install(getApplication());

,请使用Application