如何解决这个问题,我搜索结果我不知道如何解决结果。
我正在使用广播接收器来接收数据
@Override
public void onReceive(Context context, Intent intent) {
Realm.init(context);
realm = Realm.getDefaultInstance();
}
在广播接收器类中,我已经初始化了这个领域。问题发生在`realm = Realm.getDefaultInstance();行。请帮我解决这个问题。
应用程序的oncreate()方法中的领域初始化是
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dash_board);
Realm.init(this);
// RealmConfiguration config = new RealmConfiguration.Builder()
// .deleteRealmIfMigrationNeeded()
// .build();
RealmConfiguration config = new RealmConfiguration.Builder()
.schemaVersion(3) // Must be bumped when the schema changes
.migration(new Migration()) // Migration to run
.build();
Realm.setDefaultConfiguration(config);
// Realm.deleteRealm(config);
realm.getDefaultInstance();
我已经在活动中初始化了这个领域。请帮我解决这个问题。
答案 0 :(得分:3)
这种情况正在发生,因为触发广播接收器时未设置Realm.setDefaultInstance(config)
。
看起来您正在设置活动中的默认配置。你应该在Application.onCreate()
代替。
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Realm.init(this);
RealmConfiguration config = new RealmConfiguration.Builder()
.schemaVersion(3) // Must be bumped when the schema changes
.migration(new Migration()) // Migration to run
.build();
Realm.setDefaultConfiguration(config);
}
}
// Remember to set `name` in Manifest as well
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.realm.examples.intro" >
<application android:name=".MyApplication">
<!-- Activities -->
</application>
</manifest>
答案 1 :(得分:2)
变化
@Override
public void onReceive(Context context, Intent intent) {
Realm.init(context);
realm = Realm.getDefaultInstance();
到
@Override
public void onReceive(Context context, Intent intent) {
Realm.init(context);
RealmConfiguration config = new RealmConfiguration.Builder()
.schemaVersion(SCHEMA_VERSION) // Must be bumped when the schema changes
.migration(new Migration()) // Migration to run
.build();
realm = Realm.getInstance(config);
在您的广播接收器中。
和
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dash_board);
Realm.init(this);
RealmConfiguration config = new RealmConfiguration.Builder()
.schemaVersion(SCHEMA_VERSION) // Must be bumped when the schema changes
.migration(new Migration()) // Migration to run
.build();
将SCHEMA_VERSION
属性移动到public static final int
(常量)的位置。