2013-09-24 2 views
2

Est-ce que quelqu'un sait la différence entre appuyer sur le bouton d'alimentation et le bouton d'accueil? Dans mon application, j'ai essayé de mettre une instruction de débogage dans chaque cycle de vie de l'activité et les deux ont le même résultat: l'activité sera onPause et sera onRestart puis onResume lorsque l'activité sera rouverte (si nous appuyons sur bouton d'accueil plus tôt) ou lorsque nous allumons l'appareil à nouveau en appuyant sur le bouton d'alimentation (si nous appuyons sur le bouton d'alimentation plus tôt). Ayant ce même comportement/séquence, je m'attendais à ce que l'application de ma caméra fonctionne de la même manière dans les deux cas. Mais ce n'est pas. J'ai utilisé surfaceview pour prévisualiser à la caméra. Si le bouton d'accueil, puis ré-ouvrir l'application, il va fonctionner normalement. MAIS, si j'appuie sur le bouton de mise en marche et que j'appuie encore une fois pour le rallumer, la surface se fige et l'aperçu se fige aussi. Mais l'appareil photo fonctionne toujours (si j'appuie sur le bouton de l'appareil photo, il captera toujours une photo).android: Différence entre le bouton d'accueil en appuyant sur et le bouton d'alimentation?

Je suis vraiment coincé dans ce qui est la différence entre ces deux ...

EDIT:

Après les tests et les essais, je l'ai découvert la différence est que lorsque j'appuie sur le bouton d'accueil, l'application sera onPause() et ensuite la surface sera détruite. D'un autre côté, si j'appuie sur le bouton d'alimentation, le SurfaceView n'est pas détruit.

encore confus sur ce qui cause les deux comportements différents mais ...

+0

Libérez-vous la caméra dans 'onPause() ' – FoamyGuy

+0

@FoamyGuy yup je suis! – CodingBird

+0

Lorsque la vue de surface se fige, y a-t-il quelque chose dans le logcat? – FoamyGuy

Répondre

1

J'ai découvert la même question et je crois que lorsque l'on appuie sur powerbutton, l'appareil passe du paysage au portrait pour afficher le verrouillage écran . Dans mon cas, je vois le surfaceChanged au lieu du détruit attendu, mais la largeur et la hauteur montrent que le changement est allé de paysage en portrait.

Modifier

Sur mon Galaxy S2 avec 4.1.2 lorsque je presse le powerbutton l'appareil ne va « OnPause » et la surface que les changements (de paysage à portrait). Quand j'appuie sur le bouton HomeButton, il passe à "onStop" et la surface est détruite sans changement.

Si vous essayez ce qui suit dans « OnPause » vous pouvez déterminer si l'écran est toujours ou désactiver

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
boolean isScreenOn = pm.isScreenOn(); 

API lvl 7.

AFAIK il est sûr d'appeler « onStop » vous-même "onPause" car vous ne pouvez pas changer le vrai cycle de vie, vous exécutez simplement le code que vous avez écrit dans le stop (la super méthode semble ne rien faire, j'ai vérifié la source d'activité)

+0

cela peut être une possibilité!ne vérifiez jamais si la surface change juste sans être détruite. Mais ce que j'ai fait à la fin est de détruire et recréer la vue de surface :) – CodingBird

+0

j'ai édité avec un peu plus d'aide – NikkyD

Questions connexes