2011-05-20 15 views
9

Tengo esta situación en la que tengo que iniciar una actividad desde mi actividad principal. Pero quiero que esta nueva actividad se inicie como un nuevo proceso (con un nuevo ID de proceso). ¿Es posible lograr esto en Android? Se agradece cualquier ayuda.¿Es posible iniciar una actividad como un nuevo proceso?

+0

"Pero quiero que esta nueva actividad se inicie como un proceso nuevo (con una nueva ID de proceso)." -- ¿por qué? No puedo pensar en ninguna buena razón para esto. AFAICT, todo lo que hará es desperdiciar RAM, desperdiciar la CPU y desperdiciar la batería sin ningún beneficio. – CommonsWare

+0

Para sobrecargar el sistema iniciando nuevos procesos una y otra vez ... existe un error conocido que le proporcionará acceso raíz una vez que se alcanza el límite PID y ADB intenta reiniciar. A medida que arranca, lo hace en el modo superusuario. Una vez que termina con sus actividades, intenta establecer sus permisos para ser un usuario normal, pero dado que se ha alcanzado el límite de PID, ese proceso falla. Te quedan acceso de shell y root. Esa sería mi suposición de por qué lo quiere;) –

+1

No sé por qué OP lo quiere, pero tengo un caso de uso: quiero iniciar y luego cerrar una biblioteca de terceros que sé que no lo hace limpie después de sí mismo (no se puede reiniciar de forma segura dentro del mismo proceso). Ser capaz de comenzar un nuevo proceso con una nueva JVM y nuevas instancias de bibliotecas nativas puede ser importante. –

Respuesta

15

sólo hay que poner androide: Proceso = ": ProcessName" para su actividad en AndroidManifest.xml

<activity 
    android:name=".YourActivity" 
    android:screenOrientation="portrait" 
    android:process=":YourProcessName"> 
    <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

En este caso "YourActivity" se ejecute en otro proceso llamado "YourProcessName".

+0

¿Puedes dar un poco más de explicación sobre eso? No estoy enterado de eso. –

+0

simplemente establecerá un nuevo proceso para la actividad, que será diferente al otro que utilizó anteriormente. De esta forma, puede tener un proceso1 para actividad1 y proceso2 para actividad2. –

+1

@AndroSelva Tengo la actividad principal ejecutándose. ¿Es posible comenzar la misma actividad como otro proceso? –

Cuestiones relacionadas