2012-02-22 6 views
3

Je développe une application gestionnaire de tâches ..Arrêter ou tuer un service

Dans cette application, j'affiche à l'utilisateur une liste des applications en cours d'exécution et le bouton kill à côté de chaque application. Lorsque l'utilisateur appuie tuer bouton l'activité correspondante seront tués et moi

 activitymanager.killbackgroundprocesses(packageName) 

J'ai créé une autre application appelée notification de service où l'utilisateur peut démarrer et arrêter un service en cliquant sur le bouton « démarrer le service » et le bouton « stop service "respectivement .. Ensuite, avant d'exécuter mon application de gestionnaire de tâches, j'ai commencé le service de l'application de notification de service. Cette activité a donc été affichée dans mon application de gestion des tâches. Mais quand je tue cette activité, elle disparaît de la liste puis réapparaît parce que le service redémarre. Comment puis-je tuer le service?

I utilisé startService et onCreate pour le démarrage et le service montrant une notification et stopservice et OnDestroy pour arrêter le service ...

+0

~ "avant d'exécuter ma tâche application de gestionnaire, j'ai commencé la service de l'application de notification de service ". Donc, ce que vous dites est que vous démarrez tous les services indépendamment du fait que l'utilisateur a choisi de les démarrer ou non? –

Répondre

8

J'ai finalement trouvé une réponse à ma question ...

Après en utilisant

activitymanager.killbackgroundprocesses(packageName) , 

nous devons vérifier s'il y a des services s'exécutant sous ce nom de paquet ou nom de processus.

Ensuite, nous devons utiliser

stopService(new Intent().setComponent(serviceInfos.get(i).service)) 

mais il renvoie une erreur, car android ne nous permet pas d'arrêter un autre service

J'utilisé ces deux lignes dans le manifeste, puis a couru mon application dans la machine de construction

coreApp="true" 
android:sharedUserId="android.uid.system" 

Ces deux lignes sont là dans les paramètres Android fichier manifest, qui permet aux paramètres d'arrêter le service si l'utilisateur veut.

Ainsi, l'activité a été tué en même temps que le service ... :)

Et rappelez-vous cela a fonctionné uniquement sur la machine de construction ....

+0

ce qui est la machine de construction, vous voulez dire que c'est le mobile que vous le faites? – pengwang

+0

non c'est la machine linux où android-sdk est construit en utilisant les commandes de construction .... – DSP

+0

nous pouvons nous construire SDK, ai-je raison – pengwang

2

Essayez d'utiliser cette autorisation dans votre Android fichier Manifest.

<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> 

et regardez ce lien, il peut être ... helpfull http://developer.android.com/reference/android/content/Context.html#startService%28android.content.Intent%29

et ceci: Start a service on onClick

+0

ya j'ai utilisé cette permission et je suis capable de tuer d'autres activités aussi..excepté l'activité avec ce service – DSP