Android: Как программно убить работу камеры в фоновом режиме? - PullRequest
1 голос
/ 11 ноября 2010

Что происходит здесь, я называю активность кадрирования изображения, а затем активность камеры выполняется в фоновом режиме.Когда я заканчиваю это действие, камера все еще жива на заднем плане.Итак, как я могу программно убить работу камеры в фоновом режиме?

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

Ответы [ 3 ]

3 голосов
/ 11 ноября 2010

Вы должны позволить Android самостоятельно обрабатывать жизненный цикл процесса. Когда ему потребуется больше памяти, он убьет неиспользуемые процессы. Если вы убьете его самостоятельно, вы также рискуете убить его, пока пользователь его использует, что приводит к плохому взаимодействию с пользователем.

1 голос
/ 11 ноября 2010

По той же причине, по которой пользователи не должны использовать Task Killer для уничтожения своих приложений каждые x минут, вы также не должны пытаться убить процесс камеры.

Почему? Операционная система сама справляется с управлением памятью. Пусть он делает свое дело, он знает, что делает. Кроме того, если вы убили службу, весьма вероятно, что она будет перезапущена при уничтожении, что приведет к истощению энергоресурсов. Вы также можете потенциально убить процесс, который пишет на диск и вызвать повреждение.

Также: как указало CommonsWare, вы используете ненадежные частные API (хакерски вызывая намерение обрезки).

0 голосов
/ 11 ноября 2010

Вы можете получить список всех запущенных процессов на телефоне через ActivityManager.getRunningAppProcesses, а затем найти тот, который хотите убить, и затем использовать метод ActivityManager.killBackgroundProcesses, чтобы завершить процесс, который вы хотите.Примечание: вам нужно разрешение KILL_BACKGROUND_PROCESSES

Примечание: этот метод поддерживается только с Android 2.2 (Froyo).В старых версиях Android вы можете получить копию исходного кода Android и найти нужную помощь, а после этого с помощью некоторой магии вы также можете убивать процессы:)

Последнее замечание: вам следуетне убивать процессы, если вы действительно не должны, как уже упоминалось.

...