android:Prozess-und Prozess-Namen
Ich versuche zu verstehen, die android:process
Attribut. Ref sagt:
Wenn der zugewiesene name dieses Attribut
beginnt mit einem Doppelpunkt (':'), eine neue
Prozess, private, um die Anwendung,
wird erstellt, wenn Sie benötigt wird. Wenn die
Prozess name beginnt mit einem Kleinbuchstaben
Charakter, eines globalen Prozesses, der
Namen erstellt. Ein globaler Prozess kann
gemeinsam mit anderen Anwendungen,
die Verringerung der Ressourcennutzung.
Wird ein Prozess erstellt werden, wenn der name beginnt nicht mit einem Doppelpunkt? Was ist, wenn es beginnt mit einem Großbuchstaben? Und was passiert, wenn ich mischen Sie die beiden Regeln?
Brauche ich zwei Komponenten von zwei Paketen in demselben Prozess ausgeführt, um Ressourcen zu sparen (und um zu vermeiden, dass zwei "running apps", die im apps-manager). Was sollte mein Prozess name? Brauche ich einen globalen Prozess?
EDIT:
Habe ich versucht mit einem einfachen Kleinschreibung name (vor-und package-Namen) und es scheint, es funktioniert wie ich es will. Trotzdem denke ich, dass ich nicht die Regeln.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht möglich ist. Ein Doppelpunkt wird nicht ein Buchstabe.
Das ist wirklich keine gute Idee. Setzen Sie Sie in das gleiche Paket, oder haben Sie unabhängig voneinander laufen.
Nicht nur würden Sie zu verwirren haben, um mit
android:process
, sondern Sie auch zu verwirren haben, um mitandroid:sharedUserId
. Keiner dieser dazu genutzt werden, um durch gewöhnliche SDK-Entwickler, besondersandroid:sharedUserId
. In der Tat, wenn Sie bereits verteilten Ihre Bewerbung, die Sie nicht Verwendungandroid:sharedUserId
es sei denn, Sie sind bereit, zu brechen, alle Ihre vorhandenen Benutzer-apps, da Sie nicht mehr in der Lage sein, um Zugriff auf Ihre original Daten, da es im Besitz von einigen anderen Benutzer-Konto.Darüber hinaus, es sei denn, Sie haben Beweise für das Gegenteil haben, würde ich nicht davon ausgehen, dass dies irgendwie "vermeiden, dass zwei" running apps "aufgelistet, in der apps-manager".
Nun, ich bin für Effizienz, und schaffen so zusätzlichen Prozesse für grins (z.B., fehlgeleitete Beratung zu machen "remote services" führen Sie in benutzerdefinierte Prozesse), ist eine schlechte Idee. Und wenn Sie arbeiten für einen Hersteller oder eine Firma mit 20+ Android Entwickler oder so etwas, und Sie zu verwirren wollen um mit dieser, werden Sie brauchen, um stellen zu finden, wo es verwendet wird, die in der AOSP-und reverse-engineer die Informationen, die Sie suchen, da dieses Zeug ist ernsthaft unter-dokumentiert. Und auch dort, ich bin nicht zu sehen, es wird zwischen mehreren Paketen, mit Ausnahme
android.process.acore
undcom.android.phone
, die stark low-level-Prozesse und sind nicht typisch und nicht-firmware apps.Damit ich wirklich empfehlen, dass Sie verlassen diese Dinge allein.
ich vermute, Sie sprechen über hintergrund-Dienste, richtig?
Wenn Sie starten Sie den Dienst ohne die ": "der Dienst ausgeführt wird, werden die gleichen Verfahren wie Ihre Anwendung funktioniert, in diesem Fall, es heißt "lokaler Dienst".
Wenn Sie starten Sie es mit dem ":" es läuft in einem eigenen Prozess, genannt "remote-service". In diesem Fall kann verwendet werden, vielleicht durch andere Aktivitäten.
Standardmäßig Android erstellt einen Prozess für eine Anwendung, wenn die erste seiner Komponenten ausgeführt werden muss. Alle Komponenten laufen dann in diesem Prozess. Der name der Standard-Prozess entspricht dem Namen des Pakets festgelegt, der durch das element.
Scheint, dass Sie nicht haben, um den
android:process
parameter, außer Sie wollen, geben Sie den Namen der Anwendung Prozess. Und wenn Sie möchten, dass einige Komponenten der Anwendung laufen in einem anderen Prozess, wie beschrieben hab ich mit der service-Beispiel oben.hoffe, das hilft etwas.
nyyrikki