首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Realm - Realm.init(this)在onCreate中失败?

Realm - Realm.init(this)在onCreate中失败?
EN

Stack Overflow用户
提问于 2016-10-21 11:04:23
回答 2查看 14.8K关注 0票数 7

我将Realm.init(这)放在我的应用程序类的onCreate中。

但是当我在活动的onCreate中调用Realm.getDefaultInstance()时,它抛出了一个异常。

代码语言:javascript
复制
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2511)
    at android.app.ActivityThread.-wrap11(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1360)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5480)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.IllegalStateException: Call `Realm.init(Context)` before calling this method.
    at io.realm.Realm.getDefaultInstance(Realm.java:208)
    at com.kimi.fastdb.PrefActivity.getRealmHelper(PrefActivity.java:1724)
    at com.kimi.fastdb.PrefActivity.onCreate(PrefActivity.java:270)
    at com.kimi.fastdb.LauncherActivity.onCreate(LauncherActivity.java:464)
    at android.app.Activity.performCreate(Activity.java:6308)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2400)

为什么我的应用程序启动后没有初始化realm实例?以及如何修复它?

应用程序:

代码语言:javascript
复制
public class App extends MultiDexApplication {

    @Override
    public void onCreate() {
        super.onCreate();
        Realm.init(this);
        RealmConfiguration realmConfiguration = new RealmConfiguration.Builder()
                    .schemaVersion( REALM_DATABASE_VERSION ) // Must be bumped when the schema changes
                    .migration( migration ) // Migration to run instead of throwing an exception
        //          .deleteRealmIfMigrationNeeded()
                    .build();
        Realm.compactRealm( realmConfiguration );
        Realm.setDefaultConfiguration(realmConfiguration);

    }
    ...
}

AndroidManifest.xml

代码语言:javascript
复制
<application
            android:name=".App"
            android:allowBackup="true"
            android:allowClearUserData="true"
            android:allowTaskReparenting="false"
            android:hardwareAccelerated="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:largeHeap="true"
            android:theme="@style/SplashScreenTheme">
...

</application>
EN

回答 2

Stack Overflow用户

发布于 2016-12-10 07:51:50

尝试:

代码语言:javascript
复制
Realm.init(getApplicationContext());
Realm realm = Realm.getDefaultInstance();

如果您有特定的配置:

代码语言:javascript
复制
Realm.init(getApplicationContext());
Realm realm = Realm.getInstance(RealmConfiguration yourConfg);

在此之后,您可以开始事务并提交它。

票数 19
EN

Stack Overflow用户

发布于 2020-08-28 22:39:01

添加领域配置:

代码语言:javascript
复制
    Realm.init(this)
    val config = RealmConfiguration.Builder()
        .build()
    Realm.setDefaultConfiguration(config)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40167694

复制
相关文章

相似问题

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