2013-01-13 1 views
3

J'ai réussi à implémenter l'échantillon de robospice (GoogleHttpClientSpiceService) et cela fonctionne - il va avec succès au serveur, obtient des données et les stocke dans le cache. Affiche même le toast et met à jour l'interface graphique si Activity n'est pas onPause.RoboSpice - commencer à ne pas travailler

Mon problème (et la seule raison pour laquelle j'ai essayé robospice) est que si l'activité est reprise, elle n'est pas notifiée à nouveau. Est-ce que je fais quelque chose de mal?

@Override //THIS IS NOT CALLED ON ACTIVITY RESUME (BECAUSE OF THIS I CANNOT DISMISS DIALOG) 
    public void onRequestSuccess(final String result) { 
     Toast.makeText(PrijavaActivity.this, "success", Toast.LENGTH_SHORT).show(); 
     Log.w(TAG, "sakses" + result); 


     FragmentManager fm = getSupportFragmentManager(); 
     Fragment fragment = fm.findFragmentByTag("prijavaDialog"); 
     if(fragment!=null) { 
      FragmentTransaction ft = fm.beginTransaction(); 
      ft.remove(fragment); 
      ft.commit(); 
     } 
    } 

Merci ...

Répondre

2

mal compris RoboSpice. Le comportement que vous obtenez est le bon.

Lorsqu'une activité est arrêtée (inactive comme vous l'avez dit) alors tous ses écouteurs de demandes sont supprimés, ils ne seront pas notifiés.

Les écouteurs sont uniquement notifiés tant que l'activité qui leur appartient est toujours active. C'est tout l'intérêt de RoboSpice: prévenir les fuites de mémoire des auditeurs ou des activités.

Si vous voulez continuer à écouter le résultat d'une requête même si l'activité qui l'a lancée est devenue inactive, vous devez adopter une stratégie différente. Vous devriez utiliser un contexte plus stable comme l'application ou un service et lancer votre formulaire de demande ou peut-être simplement écouter le résultat de la demande de ce contexte (en utilisant addListenerIfPending, pas d'exécuter).

Questions connexes