这是我的第一个 Android 应用程序,它运行良好,但我已经开始在我的 LogCat 中获取 GC_CONCURRENT 消息。我读过这是垃圾收集器,它似乎每次在 log cat 中报告时都会释放大约 %6-%7 (似乎是 4-5 次)。现在我不确定这是否意味着我有泄漏?
我安装了 MAT 插件,这就是它向我展示的内容:
似乎表明我正在使用与位图相关的东西占用超过 %60 的内存?
这是我获取位图的代码:
public void LoadMap()
{
Thread web = new Thread()
{
public void run()
{
try
{
Location loc = locMan.getLastKnownLocation(LocationManager.GPS_PROVIDER);
String mapURL = MAP_URL + "center=" + loc.getLatitude() + "," + loc.getLongitude() +"&zoom=" + MAP_ZOOM + "&size=" + MAP_SIZE + "&maptype=" + MAP_TYPE + "&sensor=true";
map = BitmapFactory.decodeStream((InputStream)new URL(mapURL).getContent());
Message msg = Message.obtain();
msg.what = 1;
handler.sendMessage(msg);
} catch (Exception e) { Log.i("ERROR:", "" + e.toString());
}
}
}; web.start();
}
private Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
switch(msg.what)
{
case 1:
SetMap();
break;
}
}
};
public void SetMap()
{
imgView = (ImageView)findViewById(R.id.imageView1);
imgView.setImageBitmap(map);
}
现在它给了我一个警告,处理程序应该是静态的,以防止潜在的内存泄漏,但我不确定这是否对我有影响?或者从服务器加载地图后如何更新我的 UI。