Ich habe Realm-Datenbank gefüllt. Alles funktioniert gut.Realm und IntentService
Die Anwendung verfügt über eine Schaltfläche, durch Drücken wird IntentService gestartet. Es ist sehr einfach für Test
Code hier
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();
}
}
Nachdem dieser Code ausgeführt wird, wird die Datenbank leer! Ich sehe keine Fehler im Protokoll.
Hinweis. Die Reinigung der Datenbank erfolgt nur, wenn ich etwas aufzeichnen möchte. werde ich keine Hilfe
EDIT1
Innenanwendungsklasse freuen. Ich benutze diesen Code
RealmConfiguration config = new RealmConfiguration.Builder(this).build();
Realm.setDefaultConfiguration(config);
EDIT2
ja du hast recht Datenbank wird nicht gelöscht!
Log.e("HNotificationService", "empty");
- Es wird nie genannt, und es ist gut
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();
Ein weiterer Grund. Wenn ich auf einen anderen Bildschirm gehe, rufe ich Code
mResPartners = Realm.getDefaultInstance().where(HPartner.class).findAllAsync();
mResPartners.removeChangeListeners();
mResPartners.addChangeListener(mPartnersListener);
Und mPartnersListener wird nie aufgerufen. Es ist sehr seltsam. Wenn IntentService nicht ausgeführt wird. mPartnersListener immer
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);
}
}
};
Das sieht normal aus. Wie ist deine Realmkonfiguration? –
siehe EDIT1 –
Wie erkennen Sie, dass der Realm leer ist, nachdem dieser Code ausgeführt wurde? –