2010-11-11 33 views
1

Ce qui se passe ici, c'est que j'appelle l'activité de l'image de recadrage et que l'activité de la caméra tourne en arrière-plan. Quand j'ai fini cette activité, la caméra est toujours en vie à l'arrière-plan. Alors, comment puis-je tuer par programmation l'activité de la caméra en arrière-plan?Android: Comment tuer par programmation l'activité de la caméra en arrière-plan?

Intent newIntent = new Intent(); newIntent.setAction("com.android.camera.action.CROP");
newIntent.setClassName("com.android.gallery", "com.android.camera.CropImage");
newIntent.setData(selectedImage); startActivityForResult(newIntent, IMAGE_CROP

+3

Vous utilisez une interface non documentée et non prise en charge sur une application qui n'existe peut-être pas sur un périphérique donné. S'il vous plaît ne faites pas cela. – CommonsWare

+0

Mais comment puis-je appeler directement l'activité de l'image de recadrage? Merci. – exception01

Répondre

3

Vous devez laisser le cycle de vie du processus de poignée Android lui-même. Quand il aura besoin de plus de mémoire, il va tuer les processus inutilisés. Si vous le tuez vous-même, vous risquez également de le tuer pendant que l'utilisateur l'utilise, ce qui entraîne une mauvaise expérience utilisateur.

+0

Il draine la batterie du téléphone, c'est pourquoi je veux arrêter ou tuer le processus. – exception01

+0

Je ne m'inquiéterais pas à ce sujet. L'application de la caméra est assez intelligente pour ne rien faire quand elle fonctionne en arrière-plan. On pourrait dire que ça gaspille de la mémoire, mais comme je l'ai dit, Android s'en chargera pour vous. – kichik

+0

Oui, vous avez raison. Je l'ai testé avec d'autres téléphones et il a automatiquement supprimé les applications inutilisées. Mais ce périphérique Android ne fonctionne pas de cette façon. Peut-être que c'est l'appareil, pas Android. Merci pour ça. – exception01

1

Pour la même raison que les utilisateurs ne devraient pas utiliser un Tueur de tâches pour tuer leurs applications toutes les x minutes, vous ne devriez pas essayer de tuer le processus de la caméra.

Pourquoi? Le système d'exploitation peut gérer la gestion de la mémoire. Laisse le faire, il sait ce qu'il fait. De même, si vous avez tué un service, il est très probable qu'il se remettra en marche lorsqu'il sera tué, ce qui entraînera une perte de ressources énergétiques. Vous pouvez également potentiellement tuer un processus qui écrit sur le disque et provoque une corruption. En outre, comme CommonsWare l'a fait remarquer, vous utilisez des API privées non fiables (en appelant hackishly l'intention de recadrage).

+0

Il draine la batterie du téléphone, c'est pourquoi je veux arrêter ou tuer le processus et je ne trouve pas de réponses sur la façon d'appeler l'activité de l'image de recadrage, sauf si vous définissez son nom de classe. – exception01

0

Vous pouvez obtenir la liste de tous les processus en cours d'exécution sur le téléphone via ActivityManager.getRunningAppProcesses, puis recherchez celui que vous voulez tuer et ensuite utiliser la méthode ActivityManager.killBackgroundProcesses pour tuer le processus que vous voulez.

Note: Vous devez permission KILL_BACKGROUND_PROCESSES

Note: Cette méthode est prise en charge depuis Android 2.2 (froyo). Sur les anciennes versions d'Android, vous pouvez vous procurer une copie du code source android et chercher le bon aidl et après cela avec l'aide d'un peu de magie, vous pouvez également tuer des processus :)

Note finale: vous ne devriez pas tuer processus sauf si vous devez vraiment comme cela a déjà été mentionné.