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

标签 android realm

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

但是当我在 Activity 的 onCreate 中调用 Realm.getDefaultInstance() 时它会抛出异常。

    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 实例没有被初始化? 以及如何解决?

应用:

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

<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>

最佳答案

尝试:

Realm.init(getApplicationContext());
Realm realm = Realm.getDefaultInstance();

如果你有特定的配置:

Realm.init(getApplicationContext());
Realm realm = Realm.getInstance(RealmConfiguration yourConfg);

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

关于android - Realm - Realm.init(this) 在 onCreate 中失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40167694/

相关文章:

swift - 在 iOS 10 Widget 和 Apple Watch 之间共享数据

ios - 与 WatchOS 共享 Realm 数据

ios - 是否有类似分页的代码用于将 JSON 数据保存到 Realmdatabase

performance - 如果我们比较 Android 的 Realm 和 GreenDAO 本地存储数据库,哪一个更好?使其中一个变慢的原因是什么?

android - 阻止所有关闭安卓应用程序的方式

android - 如何从android中的代码读取/data/anr/traces.txt?

android - 我想在 osmdroid 中添加多语言

java - Realm 无效类型

java - 对于 Android,我应该在我的游戏中更频繁地使用 float 数据类型,还是在绘图时转换为 float ?

java - 从 Web 应用程序停止 Android 进程