SQLite 대신 Realm으로 데이터베이스를 변경 한 공유 프로젝트가 있습니다.Xamarin Realm - 닫을 때 영역
내 문제는 내 DatabaseManager의 영역을 닫으면 결과가 제거된다는 것입니다. 그러므로 나는 모든 DatabaseManager가 사용하는 영역의 정적 singelton 인스턴스를 만들었습니다. 이제 내 응용 프로그램이 메모리에 잠시 후 충돌하고 내 모든 데이터베이스 기능을 제거하면 작동합니다.
내 영역 인스턴스는 여기에 생성 :
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();
}
}
의 I 내 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();
}
}
이 사람이 나를 도울 수 있습니까?