8
votes

Redémarrer le service après l'arrêt de la force

Je développe une application utilisée comme application casier, une application capable de protéger d'autres applications installées en demandant à l'utilisateur un mot de passe sur l'ouverture de ces applications, mon application est ici

Le problème est que l'application peut être facilement ignorée par la force de la fermeture du gestionnaire de tâches Android, comment puis-je surmonter cela?

Aussi quelle est la meilleure façon de rechercher une nouvelle application ouverte, de créer un service qui vérifie chaque seconde pour l'application sur le haut des tâches ou d'incendier l'alarme avec le gestionnaire d'alarme chaque seconde pour effectuer le chèque.


2 commentaires

[J'ai une solution mais non recommandée, renvoie cette réponse] [1] [1]: Stackoverflow.com/Questtions/12672438/...


@Omar si obtenir une solution puis pls post


3 Réponses :


4
votes

mis à jour: xxx

réponse: Désolé, vous ne pouvez pas le redémarrer tant que l'utilisateur lance manuellement l'application.

En supposant que votre service est en cours d'exécution dans le cadre du processus et si la force de l'utilisateur empêche votre processus, vous n'êtes empêché de jamais exécuter le service jusqu'à ce que l'utilisateur manuellement Je vous lance, est particulièrement valable de la version 3.0 et supérieure (chèque pour la vôtre). Il semble également logique lorsque vous pensez qu'il existe une application qui conserve un service de démarrage tout le temps et qui gêne l'utilisateur d'une manière ou d'une autre. Donc lorsque l'utilisateur commande un coup (:) forcer-stops) sur l'application, il ne doit pas redémarrer le service pour continuer à déranger l'utilisateur.

Par exemple, imaginez ce que arriver si vous pouviez créer des applications qui ont juste mangé à votre processeur en tenant une serrure de réveil et que vous ne pouviez pas les tuer. Ce serait horrible et une énorme désastre de sécurité.

Donc, vous ne sera pas ne sera pas en mesure de redémarrer votre service par quelque moyen que l'utilisateur lance une de vos activités.

Vous ne pouvez également pas désactiver le bouton Force-STOP AFAIK. Vous devez prendre le point de vue que rien sur l'appareil n'est à vous de contrôler à part votre application et (dans une mesure limitée) les ressources à votre accession.

Finnalement, même l'application GTALK se pliera à votre volonté si vous désirez forcer l'arrêt. Il ne commencera que lorsque vous utilisez GTALK ou d'autres applications qui utilisent le service GTALK, tel que Push Gmail (pour téléphones où GTALK n'en fais pas partie de micrologiciel).

référence Lien

Solution:

https://stackoverflow.com/a/11238779/1218762


5 commentaires

Mais Android tue mon service sur la sélection de la force de force, mais si vous avez cliqué sur Arrêter, le service fonctionnera à nouveau.


Et si j'utilise AlarmManager pour planifier une seconde Laram et l'utilisateur a arrêté l'application, l'ARALM s'arrêtera également?


Le problème est dans certains mobiles chinois où, même lors de la balayage fermé, la force arrête cette application. Et il ne fonctionnera pas avant de l'ouvrir à nouveau.


Hey Srihari, vous parlez probablement de Vivo et de Xiaomi. Je vais avoir des recherches sur ces appareils et garder cette réponse mise à jour. Ces dispositifs n'existent pas quand j'ai répondu. Désolé.


Qu'en est-il de l'application Gmail Widget? Lorsque je force l'arrêtez et retournez à l'écran d'accueil, il commence le service à nouveau.



-1
votes

Créez votre propre gestionnaire d'exception et chaque fois que l'application se bloque Start Service ..

Votre classe de gestionnaire d'exception xxx

joindre dans votre activité xxx


2 commentaires

Une exception a-t-elle été lancée lorsque la force d'utilisateur arrête le service?


@MSN Est-ce que cela fonctionne si j'attache que cela, un service permet de dire, je joins ce service et si quelqu'un arrête le service, il redémarrera le service. J'aurais attaché le code à l'Ondestroy () mais j'ai entendu dire que l'arrêt de force l'application peut ne pas appeler OnDestroy ()



1
votes

J'ai résolu ce problème en planifiant AlarmManager, pour exécuter mon service à nouveau:

    public void onDestroy() {
        AlarmManager alarmMgr = (AlarmManager)this.getSystemService(this.ALARM_SERVICE);
        Intent i = new Intent(this, MyService.class);
        PendingIntent pendingIntent = PendingIntent.getService(this, 0, i, 0);
        alarmMgr.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 10, pendingIntent);
    }


3 commentaires

Asaik, si vous avez une alarme planifiée et que l'utilisateur a forcé l'arrêt de votre application, le système annulera votre alarme.


Cela fait l'affaire, mais j'ai fait appel à Super.ondetroy () après l'exécution du code ci-dessus (AlarmManager).


Où sera-t-il appelé cet ondestroy? Application?