领域-Realm.init(this)在onCreate中失败吗? [英] Realm - Realm.init(this) failed in onCreate?
本文介绍了领域-Realm.init(this)在onCreate中失败吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我将Realm.init(this)放在我的Application类的onCreate中.
I put Realm.init(this) in the onCreate of my Application class.
但是当我在Activity的onCreate中调用Realm.getDefaultInstance()时,它将引发异常.
But it throws an exception while I'm calling Realm.getDefaultInstance() in the onCreate of my Activity.
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)
为什么在我的应用程序启动后未初始化领域实例? 以及如何解决?
Why the realm instance not been initialized after my Application starts? And how to fix it?
应用程序:
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
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();
如果您具有特定的配置:
If you have specific configuration :
Realm.init(getApplicationContext());
Realm realm = Realm.getInstance(RealmConfiguration yourConfg);
之后,您可以开始事务并提交它.
After that, you can begin transaction and commit it.
这篇关于领域-Realm.init(this)在onCreate中失败吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文