首先,我確實發佈了這個android谷歌組,但它的主持人,我不知道需要多長時間來顯示那裏,所以希望有人在這裏可以幫助。我的簡單ListView應用程序正在泄漏內存。我做錯了什麼?
我創建了一個簡單的應用程序,並在ListActivity上創建了一個ListView 我在網上找到的示例。
該應用程序有2個活動,第一個有一個按鈕來創建 秒。當我點擊關閉按鈕上的第二個活動時,我會 喜歡它釋放它的內存(或者至少允許它收集垃圾 )。目前它永遠不會發布。
我必須在這裏做錯事,因爲MyListActivity永遠不會發布 。任何人都可以告訴我,我的活動創建/銷燬的方式是否與 做錯了?或者如果我的ListView的使用情況不正確?
謝謝。
我的應用作爲一個zip - http://www.mediafire.com/?l26o5hz2bmbwk6j
的Eclipse MAT的屏幕截圖顯示列表的活動從來沒有釋放 記憶 - www.mediafire.com/?qr6ga0k
public class MyListActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listlayout);
ListAdapter ada = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, GENRES);
setListAdapter(ada);
}
@Override
public void onDestroy()
{
super.onDestroy();
System.gc();
}
public void ClickHandler(View target)
{
switch (target.getId())
{
case R.id.LL_Btn1:
finish();
break;
}
}
private static final String[] GENRES = new String[] {
"Action", "Adventure", "Animation", "Children", "Comedy", "Documentary", "Drama",
"Foreign", "History", "Independent", "Romance", "Sci-Fi", "Television", "Thriller"
};}
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void ClickHandler(View target)
{
switch (target.getId())
{
case R.id.M_Button01:
Intent intent = new Intent();
intent.setClassName(MyListActivity.class.getPackage().getName(), MyListActivity.class.getName());
startActivity(intent);
break;
}
}}
呃......我沒有下載郵編,謝謝。你能發佈相關的片段嗎? – 2010-11-18 18:49:46
是什麼讓你覺得有泄漏? Android可以讓你的活動長時間運行,除非它需要內存。 – dhaag23 2010-11-18 19:12:37
確定它是內存泄漏的原因是,我可以繼續這樣做,直到我的應用程序崩潰,通過打開活動並關閉它。它不會釋放內存。 Eclipse的MAT工具顯示了對mContext的依賴。 – 2010-11-18 23:13:12