Manifest android:process field

37 views
Skip to first unread message

pietrop

unread,
Aug 3, 2015, 3:08:06 PM8/3/15
to android-...@googlegroups.com
Hi all,

I am using such field in the AndroidManifest file to unsure that an
activity it's started as a separate process each time, I am using it in
this way :


<activity ....
android:process=":testprocess"
...
/>

Following the Android documentation the colon ":" should mean the
activity will be started in a new private process each time, or at least
it will not share the process with anybody else, quoting from the
Android website:

"If the name assigned to this attribute begins with a colon (':'), a new
process, private to the application, is created when it's needed and the
activity runs in that process"

What I see is that this is not happening all the time, actually it looks
like the process is recycled to recreate the same activity, what I have
done is to add a print right at the top of pretty much every on*
activity's methods:

I am printing the object id and the process id obtained through

android.os.process.myPid();

Yes, I did not need it since the process id is printed out each time but
I've realized it just now :-)


[...]
I/user ( 9428): onCreate 9428 Object Activity@41b5da18
I/user ( 9428): onStart 9428 Object Activity@41b5da18
I/user ( 9428): onResume 9428 Object Activity@41b5da18
I/user ( 9428): onStop 9428 Object Activity@41b5da18
I/user ( 9428): onStart 9428 Object Activity@41b5da18
I/user ( 9428): onResume 9428 Object Activity@41b5da18
I/user ( 9428): onStop 9428 Object Activity@41b5da18
I/user ( 9428): onStart 9428 Object Activity@41b5da18
I/user ( 9428): onResume 9428 Object Activity@41b5da18
I/user ( 9428): onStop 9428 Object Activity@41b5da18
I/user ( 9428): onStart 9428 Object Activity@41b5da18
I/user ( 9428): onResume 9428 Object Activity@41b5da18
I/user ( 9428): onStop 9428 Object Activity@41b5da18
I/user ( 9428): onStart 9428 Object Activity@41b5da18
I/user ( 9428): onResume 9428 Object Activity@41b5da18
I/user ( 9428): onStop 9428 Object Activity@41b5da18
I/user ( 9428): onStart 9428 Object Activity@41b5da18
I/user ( 9428): onResume 9428 Object Activity@41b5da18
I/user ( 9428): onStop 9428 Object Activity@41b5da18
I/user ( 9428): onDestroy 9428 Object Activity@41b5da18
I/user ( 9428): onCreate 9428 Object Activity@41b5cad8 <-- New activity
created using the old process
I/user ( 9428): onStart 9428 Object Activity@41b5cad8
I/user ( 9428): onResume 9428 Object Activity@41b5cad8
[...]


Such behavior is not always consistent, it could as it could not happen
and sometimes the activity is really started in a new process.


Anyway that gives me some troubles since, for no good reasons, a
System.exit(0) is called at the end of the onDestroy() thus terminating
the whole VM and preventing the activity from being created and
restarted again, such bit was commented out during the tests I have made
to make it possible for me to gather the traces and debug the issue.


Unfortunately I can't change such incorrect application behavior
nevertheless I wonder if I have some other tricks to play from an
application point of view which enables the activity to be restarted in
a new process each time.

I wouldn't dislike for the sake of my own knowledge to be pointed where
such behavior is implemented, where is the Activity created and started
and where is decided to start it from a new process or not ?


Cheers,
Pietro

Reply all
Reply to author
Forward
0 new messages