2011-11-16 22 views
8

¿Puede alguien decirme cuál es la diferencia entre tarea y proceso en Android. Si uso este fragmento de código.Diferencia entre ejecutar tarea y ejecutar proceso en Android

ActivityManager Appmgr; 
protected List<ActivityManager.RunningTaskInfo> apps; 
protected List<ActivityManager.RunningAppProcessInfo> applications; 
applications = Appmgr.getRunningAppProcesses(); 
apps = Appmgr.getRunningTasks(30); 

¿Cuál es la diferencia entre applications = Appmgr.getRunningAppProcesses() y apps = Appmgr.getRunningTasks(30).

Por favor, ayúdame. Saludos

Respuesta

7

getRunningAppProcesses():

devuelve una lista de registros RunningAppProcessInfo, o null si no hay procesos en ejecución (no devolverá una lista vacía). Este orden de lista no está especificado.

getRunningTasks (int maxNum):

devolver una lista de las tareas que se están ejecutando actualmente, con el más reciente es la primera y más viejos queridos después en orden. Tenga en cuenta que "ejecutar" no significa que ninguno de los códigos de la tarea esté actualmente cargado o actividad: la tarea puede haber sido congelada por el sistema, por lo que puede reiniciarse en su estado anterior cuando vuelva a ponerse en primer plano.

Actualización:

Ahora la diferencia entre Tarea y Proceso.

En Android una Tarea es un conjunto de o puede decir una colección de Actividades. Se trata de la interacción del usuario con estas actividades. Android mantiene estas actividades en la pila en consecuencia, se abren y mantienen esta pila. Puede ser una pila o muchas pilas, la última actividad abierta en la parte superior de la pila. Y cómo Android mantiene el estado de los sistemas. Una aplicación tiene su propia tarea con las actividades abiertas y si se inicia una nueva aplicación, el sistema crea una nueva tarea con nuevas actividades en la estructura LIFO. Y cuando el usuario interactúa con esta tarea en la pantalla de inicio, simplemente navega a una aplicación particular y la tarea de esta aplicación ahora se convierte en primer plano.

While Process está relacionado con el componente de la aplicación Android. Cada nueva aplicación de Android comienza en un nuevo Proceso (Proceso de Linux) en su propio espacio de usuario. Todos los componentes de la aplicación se ejecutan en el mismo proceso de forma predeterminada. Y se ejecuta como proceso de subproceso único. Es por eso que se llama Subproceso principal de la aplicación. Pero aquí puede definir un proceso por separado para diferentes componentes de aplicaciones de Android, como Actividad, Servicio, Proveedor o Receptor de difusión usando el atributo de manifiesto android:process. Android Process tiene el mismo fundamento que Linux Process con UserId, por lo que puedes combinar diferentes componentes de aplicaciones Android que se ejecutan en el mismo proceso con el mismo UserId.

Por lo tanto, cuando llame al getRunningAppProcesses() le dará todos los procesos de las aplicaciones de Android en ejecución relacionadas con la ejecución de componentes de la aplicación.

Y getRunningTasks (int maxNum) le proporciona la lista de tareas creadas para diferentes aplicaciones en ejecución por sistemas mientras el usuario interactúa con las aplicaciones.

+0

Esta respuesta solo copió y pegó desde la página de la que se originó la pregunta original. Las otras dos respuestas lo explican 'en otras palabras'. – Bamerza

+0

@Bamerza - En realidad, la respuesta anterior estaba relacionada con las preguntas antes de la actualización. Gracias por los comentarios que he actualizado la respuesta según el nuevo tema y la información de la pregunta. – user370305

8

La "respuesta" anterior es la sustitución de un tema desconocido por otro. La pregunta es sobre la definición del sistema, no sobre cómo recibir información relacionada y la diferencia entre los métodos y las clases.

Actualmente en la tarea de Android = aplicación y es un conjunto de actividades.

Proceso es división por separación de memoria y está configurado de hilos en ejecución es memoria separada.

Por defecto, la aplicación es un proceso. El desarrollador puede definir otra separación por procesos mediante el uso del atributo "android: process" en la "actividad", "servicio", "receptor" y otra definición de unidades ejecutables dentro del tiempo manifiesto.

Ver http://developer.android.com/guide/components/processes-and-threads.html

3

Android tiene núcleo de Linux. Entonces el proceso es similar a los procesos en Linux. Cada proceso puede tener múltiples hilos. Cuando un proceso comienza, la ejecución de una sola secuencia es por defecto. Este hilo se llama hilo principal o hilo de interfaz de usuario. Puede tener otros subprocesos asincrónicos o de trabajo ejecutándose en un proceso.

Tarea o Aplicación, por otro lado se puede visualizar como un conjunto de actividades en una aplicación. Es posible que cada actividad en la tarea esté configurada para ejecutarse en diferentes procesos. Lo mismo ocurre con otros derechos de Android: servicios, proveedores, etc. De hecho, los componentes de diferentes tareas/aplicaciones pueden ejecutarse en el mismo proceso (siempre que las aplicaciones compartan el mismo ID de usuario de Linux y estén firmadas con los mismos certificados).

Cuando la memoria del sistema está baja de la aplicación en ejecución, se elimina un proceso anterior. Nuevamente, tenga en cuenta que esto puede tener componentes de diferentes aplicaciones.

activityManager.getRunningTasks(Integer.MAX_VALUE) 

Above le dará la ejecución de tareas o, mejor dicho, le llame aplicación que consiste en un conjunto de actividades. (Lista de objetos RunningTaskInfo). Esto a su vez tendrá dos cosas principales.

  1. baseActivity: componente en marcha como la primera actividad en la tarea
  2. topActivity: componente de actividad en la parte superior de la pila del historial de la tarea

y

activityManager.getRunningAppProcesses() 

anteriormente se dar todos los procesos en ejecución en el sistema. Como se trata de un proceso, tendrá asociados pid (processId) y `uid (userId). Algunos de los campos son importantes aquí -

  1. processName: El nombre del proceso que este objeto está asociado con
  2. pid: el PID de este proceso; 0 si no
  3. uid: La id de usuario de este proceso.
  4. pkgList: Todos los paquetes que se han cargado en el proceso.
Cuestiones relacionadas