Realm 实例未在 Activity#onDestroy 上关闭
Posted
技术标签:
【中文标题】Realm 实例未在 Activity#onDestroy 上关闭【英文标题】:Realm instances not closing on Activity#onDestroy 【发布时间】:2018-01-09 19:37:36 【问题描述】:我正在关注realm documentation 来管理领域实例,在每个活动中我都使用相同的模式 OnDestroy 的 if 总是返回 Realm 已打开,当我打开下一个活动时,本地实例计数返回已打开的 RealmInstance 数
例如:
SplashActivity#onCreate
-> 本地实例计数 = 1
FirstActivitiy#onCreate
-> 本地实例计数 = 2
SecondActivity#onCreate
-> 本地实例数 = 3
每个Activity
都会不断增加。任何人都知道为什么该活动的领域实例未在onDestroy
上关闭?
我什至尝试在关闭它之后将领域设置为null
,但它不会更改实例计数器。
这是我用于测试的代码:
protected void onCreate(@Nullable Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_activity);
realm = Realm.getDefaultInstance();
protected void onDestroy()
super.onDestroy();
Log.e(TAG, "ON DESTROY");
realm.close();
if (realm.isClosed())
Log.e(TAG, "REALM IS CLOSED");
else
Log.e(TAG, "REALM IS OPENED");
【问题讨论】:
您是否就上述活动致电finish()
?
是的,我总是调用finish()。调用了 Ondestroy,但打开了 Realm 实例
【参考方案1】:
我猜,您打开新的Activity
而不关闭当前的Activity
。
如果我是对的,您当前活动的onDestroy
事件将不起作用。在打开新活动之前,您应该 finish()
您当前的活动,或者您可以编写另一个活动事件的代码。因为关闭活动可能会导致未来案例出现问题。也许这可以帮助您找到另一个活动事件:
android Activity LifeCycle
【讨论】:
我总是调用finish()。调用了 Ondestroy,但打开了 Realm 实例以上是关于Realm 实例未在 Activity#onDestroy 上关闭的主要内容,如果未能解决你的问题,请参考以下文章