0
我有一个共享项目,我已将数据库更改为Realm而不是SQLite。Xamarin Realm - 何时关闭Realm
我的问题是,如果我关闭我的DatabaseManager领域,结果被删除。因此,我创建了Realm的静态singelton实例,这是我所有的DatabaseManager使用的。现在我的应用在内存短时间后崩溃了,如果我删除了所有的数据库函数,它就可以工作。
我在这里创建我的领域,例如:
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();
}
}
谁能帮助我?