Looks to be a Runnable (from what I can tell).
On Mon, Aug 17, 2009 at 12:49 PM, Dianne Hackborn <hack...@android.com>wrote: > What is the type of the object in the array that is increasing in number? > > > On Mon, Aug 17, 2009 at 9:36 AM, Dan Sherman <impact...@gmail.com> wrote: > >> Still struggling with this, anyone have any ideas? >> >> - Dan >> >> >> On Sun, Aug 16, 2009 at 12:07 AM, Dan Sherman <impact...@gmail.com>wrote: >> >>> After some more testing, it doesn't look like it has anything to do with >>> creating a new OnClickListener each time. The following snippet (using the >>> same Layouts), produces the same leak. >>> >>> Its significantly shorter, and when looking at a heap dump, from what I >>> can tell, an array called mActions in ViewRoot is filling with Runnables >>> (presumably these callbacks), but I'm no expert (and have very little >>> experience in heap dump analysis). >>> >>> public class SetContentTest extends Activity implements OnClickListener { >>> @Override >>> public void onCreate(Bundle savedInstanceState) { >>> super.onCreate(savedInstanceState); >>> setMode(); >>> } >>> >>> @Override >>> public void onClick(View v) { >>> setMode(); >>> } >>> >>> public void setMode() { >>> setContentView(R.layout.main); >>> ((Button) findViewById(R.id.btn_main)).setOnClickListener(this); >>> } >>> } >>> >>> Anyone have any ideas? >>> >>> - Dan >>> >>> >>> On Sat, Aug 15, 2009 at 11:56 PM, Balwinder Kaur (T-Mobile USA) < >>> balwinder.k...@t-mobile.com> wrote: >>> >>>> >>>> I'm curious too, but seriously you should go with the other options >>>> you mentioned. Creating new onClickListeners with each click is NOT a >>>> good idea ! >>>> >>>> Balwinder Kaur >>>> Open Source Development Center >>>> ·T· · ·Mobile· stick together >>>> >>>> The views, opinions and statements in this email are those of the >>>> author solely in their individual capacity, and do not necessarily >>>> represent those of T-Mobile USA, Inc. >>>> >>>> On Aug 15, 7:25 pm, Dan Sherman <impact...@gmail.com> wrote: >>>> > Hey guys, >>>> > >>>> > Was curious if anyone could point our a way to avoid the following >>>> memory >>>> > leak. >>>> > >>>> > When switching layouts in a single activity, and assigning >>>> OnClickListeners >>>> > to buttons, each assignment looks to leak a bit of memory. >>>> > >>>> > Below is a quick example application that shows it happening with two >>>> > Button's and a simple function to switch which layout is currently >>>> active. >>>> > If run, you'll see the used memory jump slightly with each click >>>> between >>>> > them. >>>> > >>>> > I'm aware there's plenty of ways around it (using multiple activities >>>> for >>>> > each layout, using a single OnClickListener thats a member variable >>>> which >>>> > gets assigned to it each time), just curious as to where that extra >>>> > reference is going thats not getting collected. >>>> > >>>> > public class SetContentTest extends Activity { >>>> > @Override >>>> > public void onCreate(Bundle savedInstanceState) { >>>> > super.onCreate(savedInstanceState); >>>> > setContentView(R.layout.main); >>>> > Button btn = (Button) findViewById(R.id.btn_main); >>>> > btn.setOnClickListener(new OnClickListener() { >>>> > @Override >>>> > public void onClick(View v) { >>>> > setMode(false); >>>> > } >>>> > }); >>>> > } >>>> > >>>> > public void setMode(boolean main) { >>>> > if (main) { >>>> > setContentView(R.layout.main); >>>> > Button btn = (Button) findViewById(R.id.btn_main); >>>> > btn.setOnClickListener(new OnClickListener() { >>>> > @Override >>>> > public void onClick(View v) { >>>> > setMode(false); >>>> > } >>>> > }); >>>> > } else { >>>> > setContentView(R.layout.other); >>>> > Button btn = (Button) findViewById(R.id.btn_other); >>>> > btn.setOnClickListener(new OnClickListener() { >>>> > @Override >>>> > public void onClick(View v) { >>>> > setMode(true); >>>> > } >>>> > }); >>>> > } >>>> > } >>>> > >>>> > } >>>> > >>>> > And the layouts: >>>> > <?xml version="1.0" encoding="utf-8"?> >>>> > <LinearLayout xmlns:android=" >>>> http://schemas.android.com/apk/res/android" >>>> > android:orientation="vertical" >>>> > android:layout_width="fill_parent" >>>> > android:layout_height="fill_parent" >>>> > > >>>> > >>>> > <Button >>>> > android:id="@+id/btn_main" >>>> > android:layout_width="wrap_content" >>>> > android:layout_height="wrap_content" >>>> > android:text="Click for Other" >>>> > /> >>>> > </LinearLayout> >>>> > >>>> > ------------------ >>>> > >>>> > <?xml version="1.0" encoding="utf-8"?> >>>> > <LinearLayout xmlns:android=" >>>> http://schemas.android.com/apk/res/android" >>>> > android:orientation="vertical" >>>> > android:layout_width="fill_parent" >>>> > android:layout_height="fill_parent" >>>> > > >>>> > >>>> > <Button >>>> > android:id="@+id/btn_other" >>>> > android:layout_width="wrap_content" >>>> > android:layout_height="wrap_content" >>>> > android:text="Click for Main" >>>> > /> >>>> > </LinearLayout> >>>> > >>>> > Only difference between the layouts is the name (btn_main and >>>> btn_other) >>>> > >>>> > - Dan >>>> >>>> >>> >> >> >> > > > -- > 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 -~----------~----~----~----~------~----~------~--~---