And, you don't have to do this. _Adapter=null; // this line doesn't help getListView().setAdapter(null); // neither does this line
On Oct 15, 1:43 pm, viktor <victor.scherb...@gmail.com> wrote: > Hi Kebab, > > I propose you do not use this.getApplicationContext(), it will better > if you use current Activity context, because application context live > very long. It will destroyed when you uninstall your app. > > On 14 Жов, 18:58, Kebab <daalmightyke...@googlemail.com> wrote: > > > I have an application that uses a Service and some list activities. > > When the activities are opened, I can see the heap usage increase in > > DDMS. When the activities are closed, the heap usage decreases > > slightly. The service is still running in the background at this > > point. If the activity is started again by re-running the application > > and then closed, the heap usage increases again then decreases, but > > never returns to the original level before the activity was first > > opened. If it repeatedly (10-15 times) open the activity then close > > the activity, the heap size (both MB and # Objects) balloons! > > > I'd expect ListActivity's onDestroy to take care of itself when it > > gets destroyed. What am I missing with this? Am I using ListActivity > > incorrectly? > > > If I examine the heap using MAT, I see 10-15 ListView objects. > > Unfortunately, I've not got much experience with MAT, but I think it > > means that the instances are still hanging around rather than being > > garbage collected. Can anyone explain what's going on? > > > A test app similar to my real code is below. Create a new android > > application, add this to the manifest: > > > <service android:name="LeakTestService"/> > > > and these java files: > > > LeakTestActivity.java > > ------------- > > package LeakTest.Test; > > > import java.util.ArrayList; > > import java.util.HashMap; > > > import android.app.Activity; > > import android.app.ListActivity; > > import android.content.Intent; > > import android.os.Bundle; > > import android.widget.ArrayAdapter; > > import android.widget.SimpleAdapter; > > > public class LeakActivity extends ListActivity { > > ArrayList> _Data=new ArrayList>(); > > ArrayAdapter _Adapter; > > > /** Called when the activity is first created. */ > > @Override > > public void onCreate(Bundle savedInstanceState) { > > super.onCreate(savedInstanceState); > > > Intent svc = new Intent(this.getApplicationContext(), > > LeakTestService.class); > > startService(svc); > > > // the problem happens with both SimpleAdapter and > > ArrayAdapter > > //_Adapter = new SimpleAdapter(this.getApplicationContext(), > > _Data, android.R.layout.two_line_list_item, new String[] > > { "line1","line2" }, new int[] { android.R.id.text1, > > android.R.id.text2 }); > > _Adapter = new ArrayAdapter(this.getApplicationContext(), > > android.R.layout.simple_list_item_1, new String[] {"data1","data2"} ); > > > // if this line is removed, the heap usage never balloons when > > you repeatedly open+close it > > getListView().setAdapter(_Adapter); > > } > > > @Override > > public void onDestroy() { > > _Adapter=null; // this line doesn't help > > getListView().setAdapter(null); // neither does this line > > super.onDestroy(); > > } > > > } > > > LeakTestService.java > > -------- > > package LeakTest.Test; > > > import android.app.Service; > > import android.content.Intent; > > import android.os.IBinder; > > import android.widget.Toast; > > > public class LeakTestService extends Service { > > @Override > > public void onStart(Intent intent, int startId) { > > Toast.makeText(getBaseContext(), "Service onStart", > > Toast.LENGTH_SHORT).show(); > > } > > > @Override public void onDestroy() { > > Toast.makeText(getBaseContext(), "Service onDestroy", > > Toast.LENGTH_SHORT).show(); > > } > > > @Override > > public IBinder onBind(Intent intent) { > > // TODO Auto-generated method stub > > return null; > > } > > > } > > -- 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