Apertura de la cámara en un proceso diferente
Una de mis aplicaciones tiene un problema de recreación de actividad seria en algunos dispositivos de Kitkat Samsung
. El problema aparece más frecuentemente cuando se toman fotografías, y no se observa en Jellybean Samsung
mierda Jellybean Samsung
s con la mitad de la RAM. Los registros muestran una condición de memoria baja, aunque no se están OutOfMemoryException
. Creo que hay una política de cierre de actividad más agresiva en Kitkat
(o la aplicación por defecto de la cámara tiene fugas).
Me preguntaba si el sistema operativo cierra mis actividades cuando la memoria de mi aplicación es alta, o en su lugar se cierra cuando la memoria total utilizada por todas las aplicaciones es alta. Si el sistema operativo tenía un umbral por proceso, entonces tal vez la apertura de la cámara en un proceso diferente podría ayudar.
- Obtener el PID de un proceso para matarlo, sin saber su nombre completo
- Cómo matar a mi propia actividad - la manera dura
- Activación del flash de la cámara durante la grabación de vídeo
- Android obtener el nombre del proceso dentro de BroadcastReceiver
- Java.lang.Thread.setPriority vs android.os.Process.setThreadPriority
Sé que es posible iniciar un servicio en su propio proceso utilizando el atributo de process
en el manifiesto. Asumiendo que no existe ningún atributo equivalente para Activities
, si inicié un servicio de proxy en su propio proceso y luego inicié una actividad de este servicio, ¿se ejecutaría la actividad también en este proceso?
- ¿Es posible iniciar una Actividad como un nuevo proceso
- ¿Cómo algunas aplicaciones todavía pueden obtener los procesos actuales de las aplicaciones y matarlos?
- Acceso denegado (0x80004005) en Process.Start () en la aplicación android
- ¿Cuáles son los pros y los contras de usar múltiples procesos dentro de la aplicación Android
- ¿Cómo matar un proceso?
- Cada actividad en Android es un proceso o una aplicación es un proceso
- El nombre de aplicación de PackageManager siempre es nulo
- La alarma en el AlarmManager se borra cuando se procesa el proceso
El comportamiento descrito está totalmente de acuerdo con la documentación de los fundamentos de la aplicación de la que está claro que "abrir la cámara en un proceso diferente" no le ayudará, sólo porque esto es lo que ya sucede por defecto:
Cuando el sistema inicia un componente, inicia el proceso para esa aplicación (si aún no se está ejecutando) e instancia las clases necesarias para el componente. Por ejemplo, si la aplicación inicia la actividad en la aplicación de cámara que captura una foto, esa actividad se ejecuta en el proceso que pertenece a la aplicación de cámara, no en el proceso de la aplicación.
Por lo tanto, cuando la aplicación de cámara se pone en primer plano, su aplicación va a fondo, lo que hace que sea uno de los candidatos a ser asesinado por el sistema cuando es baja en la memoria como por procesos y ciclo de vida de la aplicación . Estás presenciando el comportamiento de un sistema operativo normal. La cantidad total de RAM no es un punto clave. Memoria libre de la cantidad disponible para el proceso en primer plano.
Dicho esto, la respuesta a su pregunta es No. Cualquier Activity
inicia y se ejecuta dentro de la aplicación (proceso) en la que se declaró originalmente a través del archivo de manifiesto, independientemente del proceso de la solicitud de inicio.
El comando
adb shell ps | grep 'app_name'
Le indicará en qué procesos se está ejecutando su aplicación de cámara.
Dos aplicaciones pueden ejecutarse en el mismo proceso sin embargo, pero el requisito previo necesario para esto es la misma firma de las aplicaciones … De los fundamentos de la aplicación :
Es posible organizar dos aplicaciones para compartir la misma ID de usuario de Linux … Las aplicaciones con el mismo ID de usuario también pueden arreglarse para ejecutarse en el mismo proceso de Linux y compartir la misma VM (las aplicaciones también deben estar firmadas con el mismo certificado) .
- Android Studio no compila cuando se utiliza la API obsoleta
- Desplome de Android con pantalla de bienvenida translúcida