【问题标题】:Realm instances not closing on Activity#onDestroyRealm 实例未在 Activity#onDestroy 上关闭
【发布时间】:2023-04-01 03:48:01
【问题描述】:

我正在关注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 实例

标签: android multithreading android-activity realm


【解决方案1】:

我猜,您打开新的Activity 而不关闭当前的Activity

如果我是对的,您当前活动的onDestroy 事件将不起作用。在打开新活动之前,您应该 finish() 您当前的活动,或者您可以编写另一个活动事件的代码。因为关闭活动可能会导致未来案例出现问题。也许这可以帮助您找到另一个活动事件: Android Activity LifeCycle

【讨论】:

  • 我总是调用finish()。调用了 Ondestroy,但打开了 Realm 实例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多