2011-09-12 4 views
0

私はアンドロイド用に設計されていないライブラリを使用しています。小さなローカルオブジェクトを大量に作成することによって、多くのメモリを使用します。メモリ使用量がピーク時に16MBの制限に達するので、頻繁にガベージコレクションがトリガーされます。私はうまくいくだろうが、gcを頻繁に実行すると、私のリフレッシュハンドラが望ましい遅延で実行されていない(メソッドがあまり頻繁に実行されない)必要があります。ガベージコレクションのため、Androidハンドラの呼び出し回数が少なくて済みました。

class RefreshHandler extends Handler { 
    @Override 
    public void handleMessage(Message msg) { 
     SomeActivity.this.updateView(); 
    } 

    public void sleep(long delayMillis) { 
     this.removeMessages(0); 
     sendMessageDelayed(obtainMessage(0), delayMillis); 
    } 
}; 

ガベージコレクションを引き起こすものは、自分のスレッドで実行されています。 ライブラリやコードを変更せずに実行するハンドラの規則性を改善する方法はありますか?

答えて

1

アンドロイドのガベージコレクタは、世界的なガベージコレクタであり、ライブラリとハンドラが同じVM内にある限り、あまりできることはありません。たぶんあなたはGCからたくさんの(そして、残りのものとの相互作用のための放送を使用する)VMからそれを切り離す別のアプリでハンドラーを実行できますか?

関連する問題