Fragment de l'Activité de l'application est mort, pas de sauvegardes de l'état

Je suis face à un problème très déroutant pour un très petit nombre de mes utilisateurs. L'erreur se produit lorsqu'une touche est enfoncée à l'intérieur d'un Fragment, qui commence un autre Fragment de l'Activité. Voici la trace de la pile:

I/20:22:23.901 ActivityManager( 1668)
Start proc com.brandall.nutter for activity com.brandall.nutter/.ActivityHomeFragment: pid=8956 uid=10125 gids={50125, 3003, 3001, 3002, 1015, 1023, 1006, 1028}
I/20:22:23.881 WindowState( 1668)
WIN DEATH: Window{41ed1948 u0 com.brandall.nutter/com.brandall.nutter.ActivityLinkAppsFragment}
W/20:22:23.881 ActivityManager( 1668)
Force removing ActivityRecord{411c4188 u0 com.brandall.nutter/.ActivityLinkAppsFragment}: app died, no saved state
I/20:22:23.881 WindowState( 1668)
WIN DEATH: Window{41b6a178 u0 Toast EXITING}
W/20:22:23.881 InputDispatcher( 1668)
Attempted to unregister already unregistered input channel '41ed1948 com.brandall.nutter/com.brandall.nutter.ActivityLinkAppsFragment (server)'
W/20:22:23.871 ActivityManager( 1668)
Scheduling restart of crashed service com.brandall.nutter/.TTSS in 80000ms
I/20:22:23.871 ActivityManager( 1668)
Process com.brandall.nutter (pid 8907) has died.
I/20:22:23.871 WindowState( 1668)
WIN DEATH: Window{411d4ff0 u0 com.brandall.nutter/com.brandall.nutter.ActivityHomeFragment}
E/20:22:23.871 InputDispatcher( 1668)
channel '41ed1948 com.brandall.nutter/com.brandall.nutter.ActivityLinkAppsFragment (server)' ~ Channel is unrecoverably broken and will be disposed!
W/20:22:23.871 InputDispatcher( 1668)
channel '41ed1948 com.brandall.nutter/com.brandall.nutter.ActivityLinkAppsFragment (server)' ~ Consumer closed input channel or an error occurred.  events=0x9

En raison de cette ligne de l'erreur:

com.brandall.nutter/.ActivityLinkAppsFragment}: app died, no saved state

J'ai lu de nombreux posts sur Fragment enregistré unis, mais aucune ne semble s'appliquer dans ma situation, plutôt les Fragments eux-mêmes, qui ne sont pas mentionnés dans la trace de la pile. Les messages d'autres suggèrent d'ajouter à chaque Fragment:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}

J'ai actuellement ne sont pas surcharger la méthode onCreate dans aucun de mes Fragments.

J'ai aussi vu a suggéré d'ajouter ce pour chaque Fragment:

@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
setUserVisibleHint(true);
}

En dehors du fait que ça n'arrive qu'à un très petit nombre d'utilisateurs, la plus embarrassante question est le Contexte utilisé:

final Intent sa = new Intent(getActivity(), ActivityLinkAppsFragment.class);
getActivity().startActivity(sa);

Ma demande a un de premier plan de Services et si j'utilise plutôt le Contexte statique (par le biais d'un statique getServiceContext ()) dans le but ci-dessus, le problème ne se produit plus pour les utilisateurs et le Fragment d'Activité s'ouvre correctement.

Je ne comprends pas pourquoi l'utilisation d'un autre Contexte, doit empêcher le problème de se produire, mais j'espère, avec l'information que j'ai fournie, il aura un sens pour quelqu'un!

Je peux fournir le FragmentPagerAdapter code, je suis en utilisant si cela s'avère pertinent, mais c'est assez standard.

Je vous remercie à l'avance

MODIFIER - quelque Chose de très important que j'ai oublié d'ajouter. Cela n'entraîne pas l'application de crash. Au lieu de l'Activité à partir de laquelle le Fragment est, qu'il aura redémarré immédiatement.

RÉPONSE - Cela a été causé en raison de m'appeler System.exit(0) dans des circonstances que je pensais possible uniquement lorsque l'utilisateur a voulu 'flush' l'utilisation de la mémoire de l'application. J'ai eu tort, et elle pourrait également être appelée lorsque l'utilisateur de l'appareil a été le traitement des basses conditions de mémoire. @beworker la réponse ci-dessous est marquée comme étant correcte, comme il a noté ActivityManagerService.handleAppDiedLocked() qui est le résultat de ce.

N'est-ce encore se produire si vous utilisez le modèle recommandé d'enregistrer un écouteur dans l' Activity et de manutention startActivity là? Fragments ne faut jamais commencer leur propre Activities car il n'y a aucun moyen pour eux de savoir si une Activité doit être commencé, ou un Fragment devraient être ajoutés ou remplacés. Aussi, pourquoi êtes-vous à l'aide de Intent.FLAG_ACTIVITY_NEW_TASK ici?
Le Drapeau ne doit pas être là - Désolé d'être misleadinng, il reste dans de mes tests, je vais l'enlever de la question. Comme je gérer mes Activités très simple pile, je n'ai jamais eu à examiner si oui ou non ils "devraient être commencé". Je vais rechercher l'approche de l'auditeur que vous décrivez. Je vous remercie.
pouvez-vous partager Fragment de la onClick() et du cycle de vie des méthodes?
Merci de vouloir aider - je peux réduire le code à un seul bouton et toujours répliquer. Le code serait presque identique à celle de l'exemple. javacodegeeks.com/2013/04/... C'est un petit nombre d'utilisateurs ce problème se produit pour.

OriginalL'auteur brandall | 2013-08-21