Sono d'accordo che non molti avrebbero trovato Android: processo per essere utile come un attributo del tag dell'applicazione. Tuttavia, ho trovato utile come attributo del tag attività.
Lo scopo di android:process
su un'attività è specificare che l'attività deve essere avviata in un processo con un nome specifico. La scelta di quel nome può essere utilizzata per isolare l'attività nel proprio processo (diverso da quello che l'ha lanciato), o per forzarla a convivere in un singolo processo con altre attività che utilizzano lo stesso nome.
Per la Guida Dev (http://developer.android.com/guide/topics/manifest/activity-element.html):
"Se il nome assegnato a questo attributo inizia con i due punti (':'), un nuovo processo, privato a l'applicazione, viene creato quando è necessario e la l'attività viene eseguita in quel processo Se il nome del processo inizia con un carattere minuscolo, l'attività verrà eseguita in un processo globale con quel nome, a condizione che abbia il permesso di farlo. Ciò consente ai componenti di diverse applicazioni di condividere un processo, riducendo la risorsa utilizzo."
Recentemente ho trovato che questo attributo è utile per risolvere un problema che ho avuto con l'avvio di un'attività di aiuto per un'app che, in determinate circostanze, era abbastanza vicino al limite di 16 MB di heap che si applica ancora ad alcuni dispositivi. Avviare la sua attività di aiuto è stato, in quelle situazioni, spingere la mia app oltre il limite, determinando una chiusura forzata.
Utilizzando il tag android:process
, sono stato in grado di specificare che la mia attività di guida deve essere avviata in un processo separato a sé stante. Questo processo ha il suo stesso heap da 16 MB e non è stato contato rispetto all'heap della mia app principale che l'ha lanciato. Questo ha impedito permanentemente e completamente alla mia app di esaurire lo spazio heap e di bloccarsi quando è stato avviato l'aiuto.
Se il lancio applicazione ha il nome del pacchetto
com.mycompany.mymainapp
ed è quindi assegnato un nome processo che è la stessa stringa, quindi, se si utilizza
android:process=":myhelp"
sulla vostra attività lanciato, esso verrà assegnato il nome del processo
com.mycompany.mymainapp:myhelp
e tale processo avrà il suo, separa l'ID del processo, che è possibile visualizzare (ad esempio in DDMS).
Questa, almeno, è stata la mia esperienza. Il mio test è stato finora eseguito su un vecchio Moto Droid con CM6 (Android 2.2.1), configurato per avere un limite di heap di 16 MB.
Nel mio caso, dal momento che non volevo l'utente a percepire l'aiuto come separato dalla mia app, ho inserito l'attributo
android:excludeFromRecents="true"
per evitare che l'attività di aiuto di apparire sulle recenti applicazioni (lunga -press Home) elenco. Ho incluso anche
android:taskAffinity="com.mycompany.mymainapp.HelpActivity"
dove HelpActivity è il nome dell'attività di aiuto, di separare l'attività in proprio compito
ho anche aggiunto:
android:launchMode="singleInstance"
per evitare più istanze di questa applicazione da essere creato ogni volta che l'utente ha richiamato l'aiuto.
Ho anche aggiunto la bandiera:
Intent.FLAG_ACTIVITY_NEW_TASK
l'intento usato per lanciare l'attività di aiuto.
Questi parametri possono o non possono essere necessari, a seconda dell'utilizzo che si sta facendo dell'attributo android:process
.
Considerando quanto spesso si incontrano limiti di memoria durante lo sviluppo per dispositivi Android, disporre di una tecnica che, in alcuni casi, consente di suddividere parti della propria app in processi separati, ciascuno con il proprio heap, sembra un meraviglioso regalo. Ci possono essere pericoli nascosti nel fare ciò che non ho ancora considerato o sperimentato, ma finora, così buono, nel mio caso particolare.
sembra che tu abbia un pacchetto aggiuntivo nel nome del fornitore "com.com" – CrackerJack9