У меня есть общий проект, где я изменил базу данных в Realm вместо SQLite.Xamarin Realm - когда закрыть Realm
Моя проблема: если я закрою Realm в моем DatabaseManager, результат будет удален. Поэтому я создал статический Singelton-экземпляр Realm, который использует весь мой DatabaseManager. Теперь мое приложение падает после короткого времени в памяти, и если я удалю все мои функции базы данных, это сработает.
Я создаю мой Realm-экземпляр здесь:
public class RealmDatabase
{
private Realm mRealmDB;
public Realm RealmDB
{
get
{
if (mRealmDB == null || mRealmDB.IsClosed)
{
SetRealm();
}
return mRealmDB;
}
}
static RealmDatabase cCurrentInstance;
public static RealmDatabase Current
{
get
{
if (cCurrentInstance == null)
cCurrentInstance = new RealmDatabase();
return cCurrentInstance;
}
}
public RealmDatabase()
{
}
private void SetRealm()
{
var config = new RealmConfiguration ("DBName.realm", true);
mRealmDB = Realm.GetInstance (config);
}
public Transaction BeginTransaction()
{
return RealmDB.BeginWrite();
}
}
Я мой DatabaseManagler глядя, как это:
public class NewFreeUserManager
{
internal Realm RealmDB = RealmDatabase.Current.RealmDB;
static NewFreeUserManager cCurrentInstance;
public static NewFreeUserManager Current
{
get
{
if (cCurrentInstance == null)
cCurrentInstance = new NewFreeUserManager();
return cCurrentInstance;
}
}
private NewFreeUserManager()
{
}
internal bool Save (FreeUser freeuser)
{
try
{
using (var trans = RealmDB.BeginWrite())
{
RealmDB.RemoveAll<FreeUser>();
var fu = RealmDB.CreateObject<FreeUser>();
fu = freeuser;
trans.Commit();
}
return true;
}
catch (Exception e)
{
Console.WriteLine ("FreeUser save: " + e.ToString());
return false;
}
}
internal FreeUser Get()
{
return RealmDB.All<FreeUser>().FirstOrDefault();
}
}
Может кто-нибудь мне помочь?