L'exigence est d'obtenir la liste de discussion du serveur, puis de parcourir pour obtenir les enregistrements de discussion. J'ai utilisé Observable.from(conversations) ici, puis j'ai inséré la conversation dans la base de données locale, filtrée pour obtenir les données requises, et enfin mis à jour la vue
Je l'ai regardé tout l'après-midi, donc lié à plusieurs mots-clés
SerializedSubject (je ne peux pas utiliser SerializedSubject.from(conversations), et une erreur est signalée lors de la conversion en Observable)
trampoline (mettre la tache dans la file d'attente de le thread en cours, attendez que la tache en cours soit terminée, puis continuez à exécuter la file d'attente) Tache)
concatEager (Quelle est la différence entre cet opérateur et concatMap http://blog.csdn.net/kisty_ya... Mais là il n'y a pas d'exemples d'utilisation et je ne comprends pas)
Au début, l'étape suivante est traitée dans onNext, puis j'ai utilisé flatMap pour la gérer, mais cela s'est terminé une fois le lancement terminé, je n'ai pas attendu onNext. pour terminer l'exécution, et je pense que doOnNext et flatMap sont identiques. J'espère que vous pourrez me donner quelques conseils. Je me sens comme une mouche sans tête. Pouvez-vous écrire l'idée en pseudo-code ?
走同樣的路,發(fā)現(xiàn)不同的人生
Si vous souhaitez filtrer, vous devez utiliser l'opérateur Filtre
L'utilisation de cet opérateur concatMap peut garantir que l'ordre d'exécution des threads ne sera pas désordonné?!
Obserable.fromCallable()
.filter()
.subscribe(io)
.obserableOn(ui)
.subscribe(action)
如果是需要將過濾的數(shù)據(jù)重新保存
Obserable data = Obserable.fromCallable()
.filter()
.subscribe(io)
.share();
data.obserableon(io)
.subscribe(數(shù)據(jù)庫)
data.obserableOn(ui)
.subscribe(更新)