0
私のライブラリコードはバイト配列をUIに通知します。UIはキューに入れられます。他のスレッドはバイト配列をデキューし、ハンドラのインスタンスを使用してバイト配列をバンドルし、メッセージを送信してUIを更新します。ハンドラのメモリリークを回避する方法は?
UI
public void run(){
while(running){
try {
byte[] msg=(byte[]) queue.getMsg();
Message message=new Message();
Bundle bundle=new Bundle();
bundle.putByteArray("img",msg);
message.obj=bundle;
handler.sendMessage(message);
message=null;
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
を更新するためのハンドラを使用しますが、事は、私は5〜10分後にOutOfMemory例外を取得しています。コードスニペットは、 Eclipse MATヒープ・ダンプを使用すると、ヒープの90%がandroid.os.Messageのインスタンスが占有していることがわかります。