Wie entferne ich den Beobachter, nachdem ich das erste Ergebnis erhalten habe? Unten sind zwei Code-Möglichkeiten, die ich ausprobiert habe, aber beide erhalten weiterhin Updates, obwohl ich den Beobachter entfernt habe.LiveData remove Beobachter nach dem ersten Rückruf
Observer observer = new Observer<DownloadItem>() {
@Override
public void onChanged(@Nullable DownloadItem downloadItem) {
if(downloadItem!= null) {
DownloadManager.this.downloadManagerListener.onDownloadManagerFailed(null, "this item already exists");
return;
}
startDownload();
model.getDownloadByContentId(contentId).removeObservers((AppCompatActivity)context);
}
};
model.getDownloadByContentId(contentId).observeForever(observer);
model.getDownloadByContentId(contentId).observe((AppCompatActivity)context, downloadItem-> {
if(downloadItem!= null) {
this.downloadManagerListener.onDownloadManagerFailed(null, "this item already exists");
return;
}
startDownload();
model.getDownloadByContentId(contentId).removeObserver(downloadItem-> {});
});
ausgezeichnet. Danke :) – galaxigirl