2016-09-02 15 views
0

私はAndroid用のアプリケーションを作成しています。私はレルムをデータベースとして使用しています。レルムはアプリ全体でうまく動作します。今は、 "NotificationExtender"クラスからデータを挿入したいと思います(これは、1つの通知を受け取ってカスタマイズするのに役立ちます)。これはoutOfMemoryエラーにつながりますどのようにこれを処理できますか?Android - 非活動クラスでレルムを使用

私のサンプルコード: 私の通知クラスでは、私はこの

RealmLibrary.insertMessageToDBFromNotificationReceiver(
           jsonObject.getString("data"), 
           jsonObject.getString("groupKey"), 
           jsonObject.getString("groupKey"), 
           mContext); 

そして、私のRealmLibraryクラスでやっている:私のgetRealm方法も

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(); 

を:どのように

public static Realm getRealm(Context context) { 

     return Realm.getDefaultInstance(); 

    } 

は、私はこのoutOfメモリを処理できますか?誰かがエラーの原因となるコードを教えてください。どちらが非効率的なコードです..

注:これは単なるサンプルコードです。必要な詳細があれば、あなたのコメントを残してください。

+0

logcatを参照することが有用であるおそらく –

+0

[OK]を確認してください私の分を与えると思います。質問を更新します – Amsheer

+0

Realmインスタンスをバックグラウンドスレッドで閉じるのは間違いありません。また、gUIDが主キーである場合は、 'chatmsg = realm.createObject(ChatMessages.class、gUID);を使用する必要があります。 – EpicPandaForce

答えて

0

私は現在、評判が49点しかないので、コメントできません。

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' 
} 

:ちょうどアイデアあなたが追加しLeakCanaryを使用すると、あなたには、いくつかのメモリリークを持っているかどうかを確認したい場合があり、(多分これは愚かである、そうであれば私に言うと、私はこの回答を削除します)
public class ExampleApplication extends Application { 

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

(あなたの活動Applicationを延長しない場合LeakCanary.install(getApplication());を使用)

関連する問題