Partage
  • Partager sur Facebook
  • Partager sur Twitter

(UP) Service en arrière plan

    19 octobre 2017 à 20:02:15

    bonjour mon application a besoin de tourner meme quand l'utilisateur l'a fermé.

    j'ai donc créer un service pour ca.

    mais lorsque je ferme l'application, le service s'arrete puis se redémarre. du coup toutes les variables présentent dans mon service se réinitialise

    comment faire pour que le service ne se relance pas à l'arret de l'appli, mais continue à tourner normalement ?

    -
    Edité par Alaure34 23 octobre 2017 à 16:31:24

    • Partager sur Facebook
    • Partager sur Twitter
      21 octobre 2017 à 18:07:42

      Personne ?

      J'ai essayé en retournant START_STICKY dans la fonction onStartCommand, mais ca ne change rien 

      • Partager sur Facebook
      • Partager sur Twitter
        23 octobre 2017 à 16:31:05

        J'ai cherché partout, mais je n'ais rien trouvé...
        • Partager sur Facebook
        • Partager sur Twitter
          23 octobre 2017 à 19:40:33

          Salut,  

          Après une petite recherche en anglais j'ai trouvé un forum avec une solution 

          https://stackoverflow.com/questions/34573109/how-to-make-an-android-app-to-always-run-in-background

          La réponse est en anglais basique donc même si ton niveau en anglais est moyens ça devrait aller je pense, au pire je reviendrais voir si tu t'en es sorti ;) 

          • Partager sur Facebook
          • Partager sur Twitter
            23 octobre 2017 à 21:23:39

            Salut,

            Merci pour ta réponse.

            C'est ce que j'avais fais, mais lorsque je ferme l'application le service se stop puis se redémarre (la fonction onCreate et re éxécuter).

            Donc toutes les variables présentent dans mon services sont réinitialisées...

            • Partager sur Facebook
            • Partager sur Twitter
              24 octobre 2017 à 8:47:02

              Salut,

              J'aurais voulu un précision pour bien comprendre ce que tu souhaite :)

              quand tu dis "je ferme l'application" :

              1: Fermé l'application dans le sens j'en sort pour aller écrire un sms ou autre et j'y reviens avec le gestionnaire où elle est resté en arrière plan.

              2: je sort de l'application et je la ferme complètement via gestionnaire, elle n'est plus en arrière plan.

              Si c'est la 2ème option exemple:

              Tu as une variable nomUser="Babar" (permet à l'utilisateur de ne pas retaper son pseudo) et que tu veux la récupéré à chaque ouverture de l'application tu peut utiliser les SharedPreferences. ;)

              -
              Edité par tsukiyo14 24 octobre 2017 à 8:47:31

              • Partager sur Facebook
              • Partager sur Twitter
                24 octobre 2017 à 8:55:57

                Coucou,

                Alors aucun des deux.

                L'option 1, ca marche bien puisque l'application tourne encore.

                L'option 2, c'est normal que ca ne marche plus, puisque j'arrete complètement l'application.

                Mais lorsque je dit : "je ferme l'application", je double tap sur le menu pour faire apparaître la liste des application, puis je slide à droite ou gauche ou j'appuie sur la poubelle pour tout fermer...

                -
                Edité par Alaure34 24 octobre 2017 à 8:56:23

                • Partager sur Facebook
                • Partager sur Twitter
                  24 octobre 2017 à 9:38:44

                  Bonjour,

                  Relit bien mon message parce que ce que tu fait pour fermer l'application c'est ce que j'ai mis dans l'option 2. Quand je dit "je la ferme complètement via le gestionnaires" c'est le fait d'ouvrir le menu des applications et de la ferme l'application avec la poubelle.

                  Donc si tu veux conservé des données de variables après une fermeture complète il te faut un sharedPreferences.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 octobre 2017 à 13:58:19

                    A d'accord, je croyais que tu parlais de fermer complètement l'application dans les paramètres pui Forcer l'arret sur l'app.

                    Mais j'ai plein de données que je veux garder (toutes celles qui sont dans mon service).

                    Il n'y a pas un moyen de détacher le service du thread principal pour qu'il ne soit plus liés à l'appli, comme ca quand on ferme l'appli, il continue à tourner normalement ?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 octobre 2017 à 15:40:51

                      Salut,

                      Comment déclares-tu ton service dans le manifest ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 octobre 2017 à 15:57:15

                        Salut,

                        Je le déclare comme ca :

                        <service android:name="com.myapplication.MonService"/>



                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 octobre 2017 à 16:30:03

                          C'est quoi exactement comme donnés ? Elles ne peuvent pas êtres stocké dans une base SQLite ? 

                          Je ne sais pas si il y a un moyen de faire continué ton service même en fermant l'application, je ne suis pas assez calé mais je doute qu'on puisse.

                          Je vais quand même effectué quelques recherches quand j'aurais le temps histoire de voir ;) 

                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 octobre 2017 à 16:55:00

                            Ben par exemple le lecture de musique par défaut sur Android, quand je le ferme, la musique tourne encore et une notification apparait avec le lecteur de musique.

                            Idem pour le chronomètre. Si je ferme l'appli, le chrono ne s'est pas arreté

                            • Partager sur Facebook
                            • Partager sur Twitter
                              24 octobre 2017 à 17:03:17

                              Salut,

                              Pour lancer ton service dans un process séparé de celui de l'application, tu peux utiliser l'attribut process dans ton manifest : https://developer.android.com/guide/topics/manifest/service-element.html#proc

                              • Partager sur Facebook
                              • Partager sur Twitter
                                24 octobre 2017 à 20:19:42

                                Ouai, mais du coup je ne peux plus bind mon service
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  24 octobre 2017 à 21:50:27

                                  ça ne devrait pas être le cas. Quelle est l'erreur ? Essaie également d'ajouter l'attribut exported="true"

                                  -
                                  Edité par rolandl 25 octobre 2017 à 17:40:53

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    20 février 2018 à 23:09:24

                                    Salut.

                                    Pour faire ce que tu veux comme un lecteur de musique, il faut appeler la fonction. startForeground(). A l'appel le service passe en premier plan. Et il ne sera jamais tuer par le système temps que tu ne stop pas le service par stop self ou autre.

                                    La fonction prend 2 paramètres. Un id unique pour la.notification, et un objet Notification. A toi de faire le nécessaire pour que l'utilisateur ai les contrôles dessus.

                                    Florian.

                                    -
                                    Edité par flo291288 21 février 2018 à 12:41:32

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    (UP) Service en arrière plan

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown