これは私の最初の 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 を更新する方法。