2016-07-14 24 views
1

私はレルムを持つノートアプリケーションで作業しています。私はバックアップを追加し、機能を復元したいと思います。だから私はthis pageで導入されたこれらの機能を実装しています。ここにユーザーシナリオがあります。アンドロイドレルム:バックアップファイルからレルムDBを復元する

  1. ユーザーが
  2. とユーザーtemp.realmするdefault.reamlを置き換え、ボタンを復元]をクリックしtemp.realmに戻っdefault.realmまで、バックアップボタンをクリックしてください。
  3. データをリロードし、新しいデータで表示します(置き換えられたdefault.realmファイル)。

アプリケーションを再起動するとうまくいきます。しかし、すぐに新しいデータをリフレッシュしたい。私のアプリケーションを再起動しなかった場合、それは変わった動作をします。だから私の質問は、アプリケーションを再起動せずに復元されたデータを表示するように、復元された領域dbを再ロードする方法です。

答えて

2

temp.realmdefault.realmにコピーする前に、古いdefault.realmを参照するすべての開いているレルムインスタンスを閉じる必要があります。これらのインスタンスにはまだファイル記述子が保持されているため、コピー後に新たにオープンされたRealmインスタンスは別のファイル記述子を保持し、Realmはパスがまったく同じなのでそれらが同じレルムであると考えます。これは、レルムが処理できない状況であり、いくつかの奇妙なことが起こる可能性があります。

Realm.deleteRealm()に電話すると、古いdefault.realmを最初に削除できます。このAPIは、削除される領域ファイルに他のRealmインスタンスがある場合にスローされます。

+0

私はこの問題を解決しました。あなたの答えは本当に役に立ちました。私は領域のインスタンスを開いてそれらを閉じたすべてのコードを見つけました。その後、うまくいく。ありがとう〜!!! :) –

関連する問題