0

これは私の最初の Android アプリケーションであり、順調に進んでいますが、LogCat で GC_CONCURRENT メッセージを受け取り始めました。これはガベージ コレクターであり、log cat で報告されるたびに約 %6-%7 解放されているようです (4-5 回のようです)。これが漏れがあることを意味するかどうかはわかりませんか?

MAT プラグインをインストールしたところ、次のように表示されました。

http://imageshack.us/a/img694/5589/suspectandroid.png http://imageshack.us/a/img694/5589/suspectandroid.png

http://imageshack.us/a/img820/4295/domtreeandroid.png http://imageshack.us/a/img820/4295/domtreeandroid.png

ビットマップ関連のものでメモリの 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 を更新する方法。

4

0 に答える 0