Existe-t-il un moyen d'avoir une seule et même instance de chaque activité?

Je trouve que dans ma demande, l'utilisateur peut être «imbriqué» dans les différentes activités ouvertes pendant que l'utilisateur utilise la demande.

Par exemple:

  • Table Mise en page avec hauteur égales
  • La logique derrière startScroll dans scroller?
  • Les types de mime disponibles pour Android?
  • Android: Ajoutez une vue à une mise en page spécifique du code
  • Projet Ui Automator 2.0 dans Android Studio
  • Comment enregistrer l'état de l'application dans Android
    1. Menu principal
    2. Liste des objets
    3. Détails de l'objet
    4. Objet Éditer
    5. Détails de l'objet
    6. Objet Détails de l'enfant
    7. Object Child Edit
    8. Objet Détails de l'enfant

    Maintenant, lorsque l'utilisateur appuie de nouveau, il doit passer deux fois par 'Object Child Details' (même objet, lorsqu'il est modifié, il revient à la page détaillée), et il en va de même pour 'Parent Object Details'.

    Existe-t-il un moyen de réutiliser les activités, si elles sont déjà ouvertes dans la pile et de les réorganiser à l'avant? La seule façon dont j'ai vu est d'activités avec l'attribut de launcher . Je crois que j'ai vu singleTask et singleTop .

    Si je supposément utiliser ces deux attributs, singleTask et singleTop , comment puis-je les utiliser? Lorsque j'ai essayé de les inclure dans la demande, cela n'a pas changé. Dois-je également définir un drapeau lors du lancement de l'intention en utilisant startActivity ?

    6 Solutions collect form web for “Existe-t-il un moyen d'avoir une seule et même instance de chaque activité?”

    Dans la propriété Manifest Activity, vous pouvez donner ce paramètre android:launchMode="singleInstance"

    Lisez plus en détail ici http://developer.android.com/guide/topics/manifest/activity-element.html

    C'est ton drapeau! http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_REORDER_TO_FRONT

     intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT) 

    Notez les 'addFlags'. Notez également que, onCreate ne sera pas appelé sur cette activité lorsqu'une nouvelle intention est livrée à elle. Il sera livré via onNewIntent() .

    Cela ne garantit pas qu'il existe une instance unique de l'activité en cours d'exécution. Pour vous assurer, vérifiez ceci: http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

    En utilisant android: launchMode = "SingleTask" est probablement la meilleure approche, puisqu'il ne recrée pas l'activité si elle est déjà en cours d'exécution. Il suffit de l'ajouter à l'activité dans votre AndroidManifest.xml, et vous devriez être configuré.

     <activity android:name=".MyActivity" android:label="@string/app_name" android:launchMode="singleTask" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

    Voici une autre question qui pourrait être utile: mode de lancement Android OneTask ou singleInstance?

    Oui, vous ne pouvez exiger qu'une seule instance de ces activités soit créée, mais elle n'est généralement pas recommandée. Si vous êtes simplement préoccupé par l'histoire, regardez Intent.FLAG_ACTIVITY_CLEAR_TOP .

    Ajouter les drapeaux intentionnels comme

    Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP); StartActivity(srcActivity.java, DesiredActivity.class);

    Ensuite, à l' onPause() DesiredActivity

    Ajouter finish() , Cela a fait le travail pour moi.

     Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_HISTORY); 

    Ça marche pour moi 🙂

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.