首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UI-Thread中为领域使用Singleton

在UI-Thread中为领域使用Singleton
EN

Stack Overflow用户
提问于 2015-12-14 16:55:25
回答 1查看 662关注 0票数 2

我在项目中使用领域。我构建这个RealmActivity是为了在代码中轻松地使用getActivity.getRealm()。

代码语言:javascript
复制
public abstract class RealmActivity extends AppCompatActivity {

private Realm realm;

@Override
protected void onCreate(Bundle savedInstanceState) {
    realm = Realm.getDefaultInstance();
    super.onCreate(savedInstanceState);
}


@Override
protected void onDestroy() {
    super.onDestroy();
    if (!realm.isClosed()) {
        realm.close();
    }
}


public Realm getRealm() {
    return realm;
}

现在,我想删除领域文件,以清除此会话/用户的数据。要做到这一点,必须关闭所有RealmInstances。我试图启动一个登录活动,目的是清除activityStack。它适用于我的Nexus 5 (Android 6),但不适合我的Nexus 4 (Android 5)。

我的想法是为RealmInstance创建一个单例,它在UI-线程中使用。

代码语言:javascript
复制
public abstract class RealmActivity extends AppCompatActivity {

private Realm realm;

@Override
protected void onCreate(Bundle savedInstanceState) {
    realm = ManagerLayer.getInstance().getRealm();
    super.onCreate(savedInstanceState);
}


@Override
protected void onDestroy() {
    super.onDestroy();
}


public Realm getRealm() {
    return realm;
}

}

现在,我只有一个实例,可以在删除文件之前关闭它。但是当我不注销的时候,我从来没有关闭过RealmInstance。这是个问题吗?

但是,当我清除ActivityStack和onDestroy()方法时,活动的RealmInstance也永远不会关闭。对吗?

我可以为UI-线程realmInstance使用Singleton吗?我从不把它传递给另一个线程,也从不关闭它。或者是否有另一种解决方案来关闭所有RealmInstances来删除RealmFile?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-14 17:18:03

如果希望保留整个应用程序所需的某个对象的实例,则应将此实例保存在:

  1. Application类,扩展它并在AndroidManifest.xml中设置android:name
  2. 另一个不是Android组件的类,一个简单的java类。

谈到生命周期,如果您有一些关闭领域实例的操作,这就足够了,只需在您的单例中创建一个清晰的方法并正确调用它。

如果不是这样的话,您必须记住,您永远不能保证调用onDestroy方法,但是如果您不释放资源,因为该进程已被杀死,您根本不必担心,因为当进程被杀死时,所有未持久化的对象都将被完全释放,即使它们使用的是文件系统或网络。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34272502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档