首先,我确实发布了这个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