其他类

时间:2017-08-02 06:38:15

标签: android realm

我在Android代码中打开和编写域文件时遇到了麻烦。

以下是示例代码。

public class FirstActivity extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);

        RealmConfiguration realmA = new RealmConfiguration.Builder()
                .name("A.realm")
                .schemaVersion(1)
                .build();

        RealmConfiguration realmB = new RealmConfiguration.Builder()
                .name("B.realm")
                .schemaVersion(25)
                .build();

        Realm.init(this);

        Realm realm_A = Realm.getInstance(realmA);
        // Do some jobs with realm_A
    }
}

我为示例实例制作了两个名为realmA和realmB的配置。但是,我想在另一个活动中打开它们,名为SecondActivity

我知道Realm.getDefaultInstance()但是,有两种配置,我不能使用Realm.setDefaultInstance()

你可以说在SecondActivity中声明了realmA和realmB。但是,问题是我每次修改架构后都应该修改RealmConfiguration,比如更新schemaVersion 1到2等等。这让我感到困扰.. :((如果有很多活动,我应该修改它的吨数......)

有没有什么好方法可以在其他类中使用RealmConfiguration?

1 个答案:

答案 0 :(得分:4)

您应该将配置放在Application类中,因为将在应用程序处于前台时创建并可用。

public class MyApplication extends Application {

    private RealmConfiguration rca, rcb;

    @Override
    public void onCreate() {
        super.onCreate();

        // add configuration here
        // also init private variable of configuration
    }

    public RealmConfigurationA() {
       return realmConfiguration;
    }
}

在清单文件中添加

<application
    android:name=".MyApplication"
    ....

要访问您的配置,您可以创建一个get MyApplication类并将其与强制转换一起使用

RealmConfiguration rc = ((MyApplication) getApplicationContext()).getRealmConfigurationA();