onActivityResult ne plus être appelé après OnDestroy
-
02-10-2019 - |
Question
onActivityResult me ??donne des maux de tête. Mon petit jeu a un écran titre / menu. Après avoir cliqué sur « nouveau jeu » une activité est lancée qui crée un SurfaceView pour mon monde du jeu.
Lors de la lecture, le joueur peut entrer dans les bâtiments dans le monde du jeu. En entrant dans un bâtiment je lance l'activité de ce bâtiment de mon SurfaveView. Voici un exemple:
Intent storeIntent = new Intent(mMinerClass, GeneralStore.class);
storeIntent.putExtra("player", mPlayer.save());
((Activity) mContext).startActivityForResult(storeIntent, Miner.REQUEST_STORE);
mMinerClass est défini dans le jeu Activité onCreate:
mMap .mMinerClass = Miner.this;
MMap est le SurfaceView. Je passe un paquet contenant l'état du joueur. En onActivityResult je prends le paquet retourné par l'activité du magasin et mettre à jour l'état du lecteur.
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
Bundle player = intent.getExtras();
mMap.mSavedPlayer = player;
}
mSavedPlayer est utilisé plus tard pour régler le nouvel état du lecteur.
Tous les travaux ci-dessus en général
Je peux entrer dans les magasins, acheter des trucs, des congés et le joueur est mis à jour correctement.
Le problème correspond quand j'appuie sur le bouton Home (ou someyimes bouton retour) et OnDestroy est appelée. Ma méthode de OnDestroy ne fait rien en plus super.onDestroy d'appel ();
Après OnDestroy () est appelée onActivityResult ne s'appelle plus.
1) Je joue le jeu, everthing fonctionne très bien.
2) Je la maison de presse et OnDestroy est appelé
3) relancer mon jeu via lanceur icône
4) Reprendre la partie. Je peux encore entrer et magasins de congé, mais onActivityResult n'est plus appelé.
Voici quelques sortie logcat. Je vous connecter à chaque fois que j'entre une méthode pertinente.
App start. Resuming a saved game
07-03 00:33:04.759: ERROR/Miner(4014): -->onCreate
07-03 00:33:04.819: ERROR/Miner(4014): -->onStart
07-03 00:33:08.329: ERROR/Miner(4014): -->onResume
Enter store and buy stuff 2 times. Everything working great.
07-03 00:33:30.419: ERROR/Miner(4014): -->onPause
07-03 00:33:31.279: ERROR/Miner(4014): -->onStop
07-03 00:33:35.069: ERROR/Miner(4014): -->onActivityResult
07-03 00:33:35.069: ERROR/Miner(4014): -->onRestart
07-03 00:33:35.069: ERROR/Miner(4014): -->onStart
07-03 00:33:36.709: ERROR/Miner(4014): -->onResume
07-03 00:33:42.129: ERROR/Miner(4014): -->onPause
07-03 00:33:43.289: ERROR/Miner(4014): -->onStop
07-03 00:33:55.279: ERROR/Miner(4014): -->onActivityResult
07-03 00:33:55.279: ERROR/Miner(4014): -->onRestart
07-03 00:33:55.279: ERROR/Miner(4014): -->onStart
07-03 00:33:56.879: ERROR/Miner(4014): -->onResume
Back button pressed bringing me to title screen
07-03 00:35:26.283: ERROR/Miner(4014): -->onPause
07-03 00:35:27.153: ERROR/Miner(4014): -->onStop
07-03 00:35:27.333: ERROR/Miner(4014): -->onDestroy
Resume Game
07-03 00:36:12.953: ERROR/Miner(4014): -->onCreate
07-03 00:36:13.003: ERROR/Miner(4014): -->onStart
07-03 00:36:14.663: ERROR/Miner(4014): -->onResume
Enter store and buy stuff twice. No more onActivityResult
07-03 00:36:52.063: ERROR/Miner(4014): -->onPause
07-03 00:36:52.863: ERROR/Miner(4014): -->onStop
07-03 00:36:59.913: ERROR/Miner(4014): -->onRestart
07-03 00:36:59.913: ERROR/Miner(4014): -->onStart
07-03 00:37:01.593: ERROR/Miner(4014): -->onResume
07-03 00:37:23.353: ERROR/Miner(4014): -->onPause
07-03 00:37:24.173: ERROR/Miner(4014): -->onStop
07-03 00:37:29.173: ERROR/Miner(4014): -->onRestart
07-03 00:37:29.173: ERROR/Miner(4014): -->onStart
07-03 00:37:30.793: ERROR/Miner(4014): -->onResume
Je souhaite publier ce billet depuis mon téléphone pour excuser les fautes de frappe muets.
Je vous remercie de tout comprendre y'all peut fournir à ce sujet. Merci!
La solution
Vous devriez mettre une plus grande attention à cette ligne:
((Activity) mContext).startActivityForResult(storeIntent, Miner.REQUEST_STORE)
Êtes-vous sûr mContext est l'activité correcte? Je soupçonne que ce n'est pas l'activité en cours, mais la référence à une autre instance d'activité, le premier qui a été fermé avant. Pouvez-vous utiliser « ce » au lieu de mContext?