[android-developers] Re: Activity lifecycle and static variables ....

2009-07-14 Thread Dianne Hackborn
Statics are statics -- they are global to the process.  So their value will
last for the lifetime of the process, which is usually much longer than an
individual activity instance.

On Tue, Jul 14, 2009 at 12:52 PM, Richard Schilling 
richard.rootwirel...@gmail.com wrote:


 I just ran into a situation where it looks like a static variable
 reference is persisted across activity sessions.  I didn't expect that
 because I thought that when an activity exits, it's de-referenced and
 garbage collected.

 I am wondering if anyone can shed some (more) light on when the VM
 eliminates object references for Activities and Services and in
 particular when static variables get reset to default values?


 Thanks.

 Richard Schilling
 Root Wireless

 



-- 
Dianne Hackborn
Android framework engineer
hack...@android.com

Note: please don't send private questions to me, as I don't have time to
provide private support, and so won't reply to such e-mails.  All such
questions should be posted on public forums, where I and others can see and
answer them.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~--~~~~--~~--~--~---



[android-developers] Re: Activity lifecycle and static variables ....

2009-07-14 Thread Richard Schilling

Thanks Dianne.  Very helpful indeed.

For process lifetime, I don't think you're referring to the entire
lifetime of an Activity as defined on the API reference page for
Activity (http://developer.android.com/reference/android/app/
Activity.html):

The entire lifetime of an activity happens between the first call to
onCreate(Bundle) through to a single final call to onDestroy().

Rather, you're referring to a broader lifetime of the process that
underlies the Activity correct?  This would be the lifetime
associated with android.os.Process I assume

Richard Schilling
Root Wireless




On Jul 14, 1:23 pm, Dianne Hackborn hack...@android.com wrote:
 Statics are statics -- they are global to the process.  So their value will
 last for the lifetime of the process, which is usually much longer than an
 individual activity instance.

 On Tue, Jul 14, 2009 at 12:52 PM, Richard Schilling 



 richard.rootwirel...@gmail.com wrote:

  I just ran into a situation where it looks like a static variable
  reference is persisted across activity sessions.  I didn't expect that
  because I thought that when an activity exits, it's de-referenced and
  garbage collected.

  I am wondering if anyone can shed some (more) light on when the VM
  eliminates object references for Activities and Services and in
  particular when static variables get reset to default values?

  Thanks.

  Richard Schilling
  Root Wireless

 --
 Dianne Hackborn
 Android framework engineer
 hack...@android.com

 Note: please don't send private questions to me, as I don't have time to
 provide private support, and so won't reply to such e-mails.  All such
 questions should be posted on public forums, where I and others can see and
 answer them.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~--~~~~--~~--~--~---



[android-developers] Re: Activity lifecycle and static variables ....

2009-07-14 Thread Dianne Hackborn
Yeah, the process lifetime, which is outlined here:

http://developer.android.com/guide/topics/fundamentals.html#proclife

On Tue, Jul 14, 2009 at 1:38 PM, Richard Schilling 
richard.rootwirel...@gmail.com wrote:


 Thanks Dianne.  Very helpful indeed.

 For process lifetime, I don't think you're referring to the entire
 lifetime of an Activity as defined on the API reference page for
 Activity (http://developer.android.com/reference/android/app/
 Activity.htmlhttp://developer.android.com/reference/android/app/%0AActivity.html
 ):

 The entire lifetime of an activity happens between the first call to
 onCreate(Bundle) through to a single final call to onDestroy().

 Rather, you're referring to a broader lifetime of the process that
 underlies the Activity correct?  This would be the lifetime
 associated with android.os.Process I assume

 Richard Schilling
 Root Wireless




 On Jul 14, 1:23 pm, Dianne Hackborn hack...@android.com wrote:
  Statics are statics -- they are global to the process.  So their value
 will
  last for the lifetime of the process, which is usually much longer than
 an
  individual activity instance.
 
  On Tue, Jul 14, 2009 at 12:52 PM, Richard Schilling 
 
 
 
  richard.rootwirel...@gmail.com wrote:
 
   I just ran into a situation where it looks like a static variable
   reference is persisted across activity sessions.  I didn't expect that
   because I thought that when an activity exits, it's de-referenced and
   garbage collected.
 
   I am wondering if anyone can shed some (more) light on when the VM
   eliminates object references for Activities and Services and in
   particular when static variables get reset to default values?
 
   Thanks.
 
   Richard Schilling
   Root Wireless
 
  --
  Dianne Hackborn
  Android framework engineer
  hack...@android.com
 
  Note: please don't send private questions to me, as I don't have time to
  provide private support, and so won't reply to such e-mails.  All such
  questions should be posted on public forums, where I and others can see
 and
  answer them.
 



-- 
Dianne Hackborn
Android framework engineer
hack...@android.com

Note: please don't send private questions to me, as I don't have time to
provide private support, and so won't reply to such e-mails.  All such
questions should be posted on public forums, where I and others can see and
answer them.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~--~~~~--~~--~--~---



[android-developers] Re: Activity lifecycle and static variables ....

2009-07-14 Thread Richard Schilling

Yes.  I had read that, and I understand that the VM tries to stratify
processes depending on their function and keep my process alive as
long as possible.  What I'm really interested in is detecting when the
the VM (re)-instantiated and garbage collects my Activity class, and
how that relates to the process identifier...

So, with this code, would procewssIDChanged ever be true?  I know it's
a mundane question, but it tells me a lot about Android process
management



public IfWeirdAlWasAProgrammer extends Activity{

   private static boolean newInstance = true;
   private static int currentProcessId = -1;

   private boolean processIDChanged = false; // non-static on purpose

  @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

if (newInstance){
Log.i(WeirdAlWasHere, Like a surgeon, cuttin' for the
very first time.);
newInstance = false;
currentProcessId = android.os.Process.myPid();
}

if (!newInstance  (currentProcessId !=
android.os.Process.myPid()){
   processIDChanged = true;
   Log.i(WeirdAlWasHere, I lost on Jeapordy, baby!
O!);
}


}
}



Thanks again.



On Jul 14, 1:41 pm, Dianne Hackborn hack...@android.com wrote:
 Yeah, the process lifetime, which is outlined here:

 http://developer.android.com/guide/topics/fundamentals.html#proclife

 On Tue, Jul 14, 2009 at 1:38 PM, Richard Schilling 



 richard.rootwirel...@gmail.com wrote:

  Thanks Dianne.  Very helpful indeed.

  For process lifetime, I don't think you're referring to the entire
  lifetime of an Activity as defined on the API reference page for
  Activity (http://developer.android.com/reference/android/app/
  Activity.htmlhttp://developer.android.com/reference/android/app/%0AActivity.html
  ):

  The entire lifetime of an activity happens between the first call to
  onCreate(Bundle) through to a single final call to onDestroy().

  Rather, you're referring to a broader lifetime of the process that
  underlies the Activity correct?  This would be the lifetime
  associated with android.os.Process I assume

  Richard Schilling
  Root Wireless

  On Jul 14, 1:23 pm, Dianne Hackborn hack...@android.com wrote:
   Statics are statics -- they are global to the process.  So their value
  will
   last for the lifetime of the process, which is usually much longer than
  an
   individual activity instance.

   On Tue, Jul 14, 2009 at 12:52 PM, Richard Schilling 

   richard.rootwirel...@gmail.com wrote:

I just ran into a situation where it looks like a static variable
reference is persisted across activity sessions.  I didn't expect that
because I thought that when an activity exits, it's de-referenced and
garbage collected.

I am wondering if anyone can shed some (more) light on when the VM
eliminates object references for Activities and Services and in
particular when static variables get reset to default values?

Thanks.

Richard Schilling
Root Wireless

   --
   Dianne Hackborn
   Android framework engineer
   hack...@android.com

   Note: please don't send private questions to me, as I don't have time to
   provide private support, and so won't reply to such e-mails.  All such
   questions should be posted on public forums, where I and others can see
  and
   answer them.

 --
 Dianne Hackborn
 Android framework engineer
 hack...@android.com

 Note: please don't send private questions to me, as I don't have time to
 provide private support, and so won't reply to such e-mails.  All such
 questions should be posted on public forums, where I and others can see and
 answer them.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~--~~~~--~~--~--~---



[android-developers] Re: Activity lifecycle and static variables ....

2009-07-14 Thread Dianne Hackborn
No, it will never be true.

The VM doesn't manage processes at all.  The system starts a process and
runs a VM inside of it when it needs to run any components of an
application.  Unless you specify otherwise, all of your components run in
the same VM, in the same process, sharing all of the same statics.

There is really nothing special about this besides a normal operating
system.  There are processes, these are managed by the kernel, and they run
some code.  There is Dalvik, which is some code that can run in a process.
It can't hop your code into another process.

On Tue, Jul 14, 2009 at 2:59 PM, Richard Schilling 
richard.rootwirel...@gmail.com wrote:


 Yes.  I had read that, and I understand that the VM tries to stratify
 processes depending on their function and keep my process alive as
 long as possible.  What I'm really interested in is detecting when the
 the VM (re)-instantiated and garbage collects my Activity class, and
 how that relates to the process identifier...

 So, with this code, would procewssIDChanged ever be true?  I know it's
 a mundane question, but it tells me a lot about Android process
 management



 public IfWeirdAlWasAProgrammer extends Activity{

   private static boolean newInstance = true;
   private static int currentProcessId = -1;

   private boolean processIDChanged = false; // non-static on purpose

  @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

if (newInstance){
Log.i(WeirdAlWasHere, Like a surgeon, cuttin' for the
 very first time.);
newInstance = false;
currentProcessId = android.os.Process.myPid();
}

if (!newInstance  (currentProcessId !=
 android.os.Process.myPid()){
   processIDChanged = true;
   Log.i(WeirdAlWasHere, I lost on Jeapordy, baby!
 O!);
}


}
 }



 Thanks again.



 On Jul 14, 1:41 pm, Dianne Hackborn hack...@android.com wrote:
  Yeah, the process lifetime, which is outlined here:
 
  http://developer.android.com/guide/topics/fundamentals.html#proclife
 
  On Tue, Jul 14, 2009 at 1:38 PM, Richard Schilling 
 
 
 
  richard.rootwirel...@gmail.com wrote:
 
   Thanks Dianne.  Very helpful indeed.
 
   For process lifetime, I don't think you're referring to the entire
   lifetime of an Activity as defined on the API reference page for
   Activity (http://developer.android.com/reference/android/app/
   Activity.html
 http://developer.android.com/reference/android/app/%0AActivity.html
   ):
 
   The entire lifetime of an activity happens between the first call to
   onCreate(Bundle) through to a single final call to onDestroy().
 
   Rather, you're referring to a broader lifetime of the process that
   underlies the Activity correct?  This would be the lifetime
   associated with android.os.Process I assume
 
   Richard Schilling
   Root Wireless
 
   On Jul 14, 1:23 pm, Dianne Hackborn hack...@android.com wrote:
Statics are statics -- they are global to the process.  So their
 value
   will
last for the lifetime of the process, which is usually much longer
 than
   an
individual activity instance.
 
On Tue, Jul 14, 2009 at 12:52 PM, Richard Schilling 
 
richard.rootwirel...@gmail.com wrote:
 
 I just ran into a situation where it looks like a static variable
 reference is persisted across activity sessions.  I didn't expect
 that
 because I thought that when an activity exits, it's de-referenced
 and
 garbage collected.
 
 I am wondering if anyone can shed some (more) light on when the VM
 eliminates object references for Activities and Services and in
 particular when static variables get reset to default values?
 
 Thanks.
 
 Richard Schilling
 Root Wireless
 
--
Dianne Hackborn
Android framework engineer
hack...@android.com
 
Note: please don't send private questions to me, as I don't have time
 to
provide private support, and so won't reply to such e-mails.  All
 such
questions should be posted on public forums, where I and others can
 see
   and
answer them.
 
  --
  Dianne Hackborn
  Android framework engineer
  hack...@android.com
 
  Note: please don't send private questions to me, as I don't have time to
  provide private support, and so won't reply to such e-mails.  All such
  questions should be posted on public forums, where I and others can see
 and
  answer them.
 



-- 
Dianne Hackborn
Android framework engineer
hack...@android.com

Note: please don't send private questions to me, as I don't have time to
provide private support, and so won't reply to such e-mails.  All such
questions should be posted on public forums, where I and others can see and
answer them.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google
Groups Android Developers group.
To post to this group, send email to 

[android-developers] Re: Activity lifecycle and static variables ....

2009-07-14 Thread Richard Schilling

That affirms a lot for me.  Thanks!

Richard Schilling
Root Wireless


On Jul 14, 4:35 pm, Dianne Hackborn hack...@android.com wrote:
 No, it will never be true.

 The VM doesn't manage processes at all.  The system starts a process and
 runs a VM inside of it when it needs to run any components of an
 application.  Unless you specify otherwise, all of your components run in
 the same VM, in the same process, sharing all of the same statics.

 There is really nothing special about this besides a normal operating
 system.  There are processes, these are managed by the kernel, and they run
 some code.  There is Dalvik, which is some code that can run in a process.
 It can't hop your code into another process.

 On Tue, Jul 14, 2009 at 2:59 PM, Richard Schilling 



 richard.rootwirel...@gmail.com wrote:

  Yes.  I had read that, and I understand that the VM tries to stratify
  processes depending on their function and keep my process alive as
  long as possible.  What I'm really interested in is detecting when the
  the VM (re)-instantiated and garbage collects my Activity class, and
  how that relates to the process identifier...

  So, with this code, would procewssIDChanged ever be true?  I know it's
  a mundane question, but it tells me a lot about Android process
  management

  public IfWeirdAlWasAProgrammer extends Activity{

    private static boolean newInstance = true;
    private static int currentProcessId = -1;

    private boolean processIDChanged = false; // non-static on purpose

  �...@override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

         if (newInstance){
             Log.i(WeirdAlWasHere, Like a surgeon, cuttin' for the
  very first time.);
             newInstance = false;
             currentProcessId = android.os.Process.myPid();
         }

         if (!newInstance  (currentProcessId !=
  android.os.Process.myPid()){
            processIDChanged = true;
            Log.i(WeirdAlWasHere, I lost on Jeapordy, baby!
  O!);
         }

     }
  }

  Thanks again.

  On Jul 14, 1:41 pm, Dianne Hackborn hack...@android.com wrote:
   Yeah, the process lifetime, which is outlined here:

  http://developer.android.com/guide/topics/fundamentals.html#proclife

   On Tue, Jul 14, 2009 at 1:38 PM, Richard Schilling 

   richard.rootwirel...@gmail.com wrote:

Thanks Dianne.  Very helpful indeed.

For process lifetime, I don't think you're referring to the entire
lifetime of an Activity as defined on the API reference page for
Activity (http://developer.android.com/reference/android/app/
Activity.html
 http://developer.android.com/reference/android/app/%0AActivity.html
):

The entire lifetime of an activity happens between the first call to
onCreate(Bundle) through to a single final call to onDestroy().

Rather, you're referring to a broader lifetime of the process that
underlies the Activity correct?  This would be the lifetime
associated with android.os.Process I assume

Richard Schilling
Root Wireless

On Jul 14, 1:23 pm, Dianne Hackborn hack...@android.com wrote:
 Statics are statics -- they are global to the process.  So their
  value
will
 last for the lifetime of the process, which is usually much longer
  than
an
 individual activity instance.

 On Tue, Jul 14, 2009 at 12:52 PM, Richard Schilling 

 richard.rootwirel...@gmail.com wrote:

  I just ran into a situation where it looks like a static variable
  reference is persisted across activity sessions.  I didn't expect
  that
  because I thought that when an activity exits, it's de-referenced
  and
  garbage collected.

  I am wondering if anyone can shed some (more) light on when the VM
  eliminates object references for Activities and Services and in
  particular when static variables get reset to default values?

  Thanks.

  Richard Schilling
  Root Wireless

 --
 Dianne Hackborn
 Android framework engineer
 hack...@android.com

 Note: please don't send private questions to me, as I don't have time
  to
 provide private support, and so won't reply to such e-mails.  All
  such
 questions should be posted on public forums, where I and others can
  see
and
 answer them.

   --
   Dianne Hackborn
   Android framework engineer
   hack...@android.com

   Note: please don't send private questions to me, as I don't have time to
   provide private support, and so won't reply to such e-mails.  All such
   questions should be posted on public forums, where I and others can see
  and
   answer them.

 --
 Dianne Hackborn
 Android framework engineer
 hack...@android.com

 Note: please don't send private questions to me, as I don't have time to
 provide private support, and so won't reply to such e-mails.  All such
 questions should be posted on public forums, where I and others can see and
 answer them.