Я заполнил базу данных о царстве. Все работает хорошо.realm и IntentService
Приложение имеет кнопку, нажимая кнопку IntentService. Это очень просто для теста
код здесь
public class HNotificationService extends IntentService {
public HNotificationService() {
super("HNotificationService");
}
@Override
protected void onHandleIntent(Intent intent) {
Log.d("HNotificationService", "onHandleIntent");
Realm realm = Realm.getDefaultInstance();
RealmResults<HPartner> mResPartner = realm.where(HPartner.class).findAll();
final HPartner hPartner = mResPartner.get(0);
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
hPartner.setName("test");
}
});
realm.close();
}
}
После выполнения этого кода, база данных становится пустым! Я не вижу ошибок в журнале.
Примечание. Очистка базы данных происходит только тогда, когда я хочу что-то записать. буду рад любой помощи
EDIT1
Внутри класса приложения. Я использую этот код
RealmConfiguration config = new RealmConfiguration.Builder(this).build();
Realm.setDefaultConfiguration(config);
EDIT2
да ты прав база данных не удаляется!
Log.e("HNotificationService", "empty");
- Он никогда не вызывается, и это хорошо
Realm realm = Realm.getDefaultInstance();
RealmResults<HPartner> mResPartner = realm.where(HPartner.class).findAll();
if (mResPartner.size() > 0) {
Log.e("HNotificationService", "don't empty!");
}
final HPartner hPartner = mResPartner.get(0);
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
hPartner.setName("test");
}
});
mResPartner = realm.where(HPartner.class).findAll();
if (mResPartner.size() == 0) {
Log.e("HNotificationService", "empty");
}
realm.removeAllChangeListeners();
realm.close();
Другая причина. Когда я перехожу на другой экран, я звоню в код
mResPartners = Realm.getDefaultInstance().where(HPartner.class).findAllAsync();
mResPartners.removeChangeListeners();
mResPartners.addChangeListener(mPartnersListener);
И mPartnersListener никогда не вызывается. Это очень странно. если не запускать IntentService. mPartnersListener всегда называли
EDIT 3
mPartnersListener = new RealmChangeListener<RealmResults<HPartner>>() {
@Override
public void onChange(RealmResults<HPartner> realmResult) {
mResPartners.removeChangeListeners();
mClusterManager.clearItems();
mGoogleMap.clear();
if (realmResult != null && realmResult.size() > 0) {
mListPartners = realmResult;
getLoaderManager().restartLoader(LMarkerIcons.ID_LOADER, null, FrAroundMeMap.this);
}
}
};
Это выглядит нормально. Какова конфигурация вашего царства? –
см. EDIT1 –
Как вы обнаруживаете, что Царство пустое после выполнения этого кода? –