1. Es posible iniciar un IntentService en un proceso independiente? Cómo? Si es así, es obligatorio que se unen a ella?
  2. Es posible iniciar un IntentService en un proceso independiente Y ejecutar en primer plano?
  3. ¿Cuál es la diferencia entre android:isolatedProcess y android:process? Ver: http://developer.android.com/guide/topics/manifest/service-element.html
  • La utilización de procesos no es una buena idea, ya que los desechos de la RAM y de la CPU, generalmente de ningún beneficio para el usuario.
  • Roger que sir! ¿Hay algún caso en el que te gustaría recomendar el uso de un proceso independiente?
  • En general de procesos múltiples son un desperdicio. Sin embargo, puedo pensar en un par de casos en los que son útiles: 1) Usted necesita más memoria de la que usted puede conseguir en un solo proceso – por lo que dividir su aplicación en múltiples proceso porque la memoria en los límites de cada proceso. 2) Usted tiene un servicio que necesita para funcionar todo el tiempo y una gran interfaz de usuario que no – poner la interfaz de usuario en un proceso que Android puede matar cuando no sea necesario y el servicio en otro proceso que se ejecuta todo el tiempo (de hecho, esto resulta ser un mejor uso de la RAM/CPU).
  • 3) la Parte de la aplicación es estable y parte de ello es flakey/buggy, o sujetos a problemas o descargado de algún sitio web – ejecutar el código estable en un proceso y las otras cosas en otro, de modo que cuando el flakey código se bloquea no tomar la parte estable con ella.
  • Usted es bienvenido a citar la prueba de sus afirmaciones respecto a la razón #2. #3 es insuficiente justificación de un segundo en un proceso lento, de poca memoria del dispositivo móvil en mi humilde opinión. Voy a conceder que #1 fue a propósito para Android 1.x/2.x, pero android:largeHeap fue añadido para la API de Nivel 11 y superior, para darle más espacio del montón sin necesidad de otro proceso, y también muchos desarrolladores piensan «oh, dame más del montón» es una solución para ineficiente de codificación.
  • Creo que lo que David Wasser entiende por «mejor uso de la RAM/CPU» no es que por arte de magia se utiliza menos recursos total, pero que es mejor, precisamente porque la interfaz de usuario puede ser muerto por el sistema operativo si es necesario, sin matar a su código esencial. Por lo que su aplicación puede lograr lo que se debe hacer con un mínimo de la huella. Luego, cuando el usuario trae la interfaz de usuario de primer plano, más se habrá logrado, a pesar de los recursos limitados. [El usuario ha hecho otra cosa que quería hacer ~y~ su aplicación se han hecho su trabajo para el usuario.]
  • O Android matar a todos los procesos de una aplicación, si se mata a alguno de ellos? En cuyo caso, esta técnica ha sido superado por android:largeHeap, como usted sugiere.
  • hace Android matar a todos los procesos de una aplicación, si se mata a alguno de ellos?» — no, AFAIK se trata de los procesos individualmente en general.

1 Comentario

  1. 36

    1) Es posible iniciar un IntentService en un proceso independiente? Cómo? Si es así, es obligatorio que se unen a ella?

    Sí, puede iniciar un IntentService en un proceso independiente. Simplemente añadir android:process=":whatever" a la entrada de manifiesto por ese servicio.

    No, no es necesario que se unen a ella. Usted puede comunicarse con él mediante el envío de Intenciones mediante startService()

    2) Es posible iniciar un IntentService en un proceso independiente Y que se ejecute en el primer plano?

    Sí (ver arriba). Para hacer su servicio que se ejecuta en primer plano se puede llamar startForeground() cada vez que quiera hacer eso. El servicio en sí está en control de si se ejecuta en primer plano o de fondo.

    3) ¿Cuál es la diferencia entre android:isolatedProcess y android:process? Ver: http://developer.android.com/guide/topics/manifest/service-element.html

    android:process permite el control en el proceso en el cual cada componente se ejecuta (especificando el nombre del proceso). Puede agrupar los componentes de la aplicación se ejecute en procesos independientes (por ejemplo, todos los componentes de interfaz de usuario en un proceso y de todos los servicios en otro). El comportamiento por defecto es que todos los componentes de una aplicación que se ejecute en el mismo proceso.

    android:isolatedProcess es una bandera (true/false) que puede establecer si desea que una determinada componente de servicio para que se ejecute en un proceso independiente, aislada del resto de la aplicación. El proceso aislado no tiene ninguno de los permisos que se conceden para el resto de su aplicación. Normalmente, se conceden permisos a una aplicación y todos los componentes de la aplicación tienen todos los permisos que la aplicación obtiene. android:isolatedProcess sólo está disponible a partir de la API de nivel 16 (Jellybean). Ver http://aleksmaus.blogspot.de/2012/09/a-feature-of-android-jelly-bean.html y La ventaja de la introducción de Isolatedprocess etiqueta dentro de los Servicios en JellyBean[Android]

    • Gracias David. No era consciente de procesos aislados.
    • isolatedProcess disponible sólo a partir de Jellybean (4.1)
    • Una pequeña adición al proceso aislado: no sólo carece de la aplicación de los permisos de android, se puede, además, el acceso sólo de lectura pública de los archivos que significa, en particular, la imposibilidad de acceso de la aplicación archivos.

Dejar respuesta

Please enter your comment!
Please enter your name here