138 votes

Android - mise en œuvre de startForeground pour un service ?

Je ne suis donc pas sûr de savoir où/comment mettre en œuvre cette méthode pour faire fonctionner mon service en avant-plan. Actuellement, je démarre mon service par ce qui suit dans une autre activité :

Intent i = new Intent(context, myService.class); 
context.startService(i);

Et ensuite, dans le onCreate() de myServices, j'essaie le startForeground()... ?

Notification notification = new Notification();
startForeground(1, notification);

Donc oui, je suis un peu perdu et incertain de la façon de mettre en œuvre cette solution.

0 votes

Cela ne fonctionne pas, du moins pour autant que je puisse dire, mon service fonctionne toujours comme un service d'arrière-plan et est tué.

0 votes

0voto

greenoldman Points 4575

La solution de @mikebertiean a presque fait l'affaire, mais j'ai eu ce problème avec une torsion supplémentaire -- j'utilise le système Gingerbread et je ne voulais pas ajouter un paquet supplémentaire juste pour exécuter la notification. Finalement, j'ai trouvé : https://Android.googlesource.com/platform/frameworks/support.git+/f9fd97499795cd47473f0344e00db9c9837eea36/v4/gingerbread/Android/support/v4/app/NotificationCompatGingerbread.java

puis je rencontre un autre problème : la notification tue tout simplement mon application lorsqu'elle s'exécute (comment résoudre ce problème : Android : Comment éviter que le fait de cliquer sur une notification appelle onCreate() ), donc au total mon code en service ressemble à ceci (C#/Xamarin) :

Intent notificationIntent = new Intent(this, typeof(MainActivity));
// make the changes to manifest as well
notificationIntent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop);
PendingIntent pendingIntent = PendingIntent.GetActivity(this, 0, notificationIntent, 0);
Notification notification = new Notification(Resource.Drawable.Icon, "Starting service");
notification.SetLatestEventInfo(this, "MyApp", "Monitoring...", pendingIntent);
StartForeground(1337, notification);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X