Comment puis-je savoir si ma demande est reprise depuis l'arrière-plan?
Je veux verrouiller ma demande quand il va dans le fond et
quand il reprend je veux afficher mon propre écran de verrouillage. L'écran de verrouillage est une Activité de mon application.
Après le succès de la pénétration de la fibre de mot de passe, l'utilisateur peut voir la reprise de l'Activité
autre chose, il ne le peut pas.
Comment puis-je faire cela?
source d'informationauteur Dharmendra | 2011-10-31
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire si vous avez une Activité mondiale "MyActivity" et toutes les activités s'étendent à partir d'elle.
Puis vous remplacez onPause et onStop méthodes sur "MyActivity"
et:
EDIT: Évidemment, vous devez créer les méthodes setLockStatus et checkLockScreen et faire ce que vous voulez (comme d'économiser de l'état de la sharedPreferences).
Le problème principal est que vous devez obtenir un comportement spécifique lorsque vous démarrez un
Activity
de l'arrière-plan.onPause()
etonResume()
sont appelés à chaque fois que vous basculez entre lesActivities
et pas seulement lorsque vous réduisez votre application. Pour contourner cela, vous pouvez obtenir les tâches en cours d'exécution à partir de laActivityManager
et de comparer leurs nom du paquet à la une de votre demande:Vous pouvez désormais le faire:
Et c'est tout! Je vous recommande de mettre en œuvre ce dans une base
Activity
à laquelle tous vos autresActivities
inhérente à partir.Pour quelqu'un qui est intéressé, si je comprends bien votre question correctement, j'ai été à la recherche dans des fonctionnalités similaires et n'étais pas heureux avec ce que j'ai trouvé. Je voulais à déterminer lorsque l'activité a été reprise à partir de l'arrière-plan vs lorsqu'il a été repris à partir de ce que l'on appelle l'activité.
J'ai fini par l'utilisation d'un indicateur booléen qui est définie à partir de startActivity qui va permettre à l'appelant de l'Activité afin de déterminer si oui ou non c'est la reprise de l'appelé de l'Activité ou de l'arrière-plan. Quelque chose comme ceci
En raison de la façon dont Android poignées de la statique et de l'activité de la pile (lire la suite dans ce billet de blog)cela devrait fonctionner sur le plan conceptuel. Un peu plus d'explication, la statique devrait être l'une des dernières choses qui obtient effacé de la mémoire lorsque votre application est en cours d'exécution si le segment de l'espace est trop grand. L'activité ne sera pas détruit sans la pile elle-même être détruit, de sorte que onResume sera appelée, et elle permettra de vérifier la statique drapeau pour voir si elle provient d'une autre activité ou de l'arrière-plan.
La statique est probablement exagéré, comme une fois de plus l'activité elle-même ne sera pas détruit et c'est globals sera tenu le plus longtemps possible. Ce n'est que conceptuelle et nous sommes encore au moyen de tests de stress, mais c'est une option. Si nous constatons des problèmes que je mettrai à jour ce post.
Votre activité a un
onResume()
rappel de son cycle de vie. Simple de passer outre et de faire ce que vous devez faire.Eh bien, vous devriez remplacer les méthodes onResume et onPause
voir cette et vous obtiendrez ça 🙂
dans votre activité, vous pouvez avoir un drapeau comme
boolean verrouillé;
et dans onPause vous pouvez définir à true.
Et à chaque fois dans des endroits critiques vous pouvez vérifier l'état du pavillon et si c'est vrai, alors vous vous montrer déverrouiller l'activité, après un succès à déverrouiller, puis définissez l'indicateur de faux.