0

バックグラウンド サービスを作成するアプリケーションを作成しました。アプリケーションを閉じるとサービスが実行され、戻って通信のために「バインド」(bindService)に戻ります。

問題は、アプリケーションを閉じて再起動すると、使用中のメモリが大幅に増加することです。20Mb -> 24Mb を消費し、外に出て 24Mb -> 28Mb、28Mb -> 30Mb を使用すると、アプリケーションが分割されます。ビットマップがありません。十分な場合は静的配列を使用しますが、私はテストしましたが、問題の原因ではありません。

アプリケーションを完全に (サービスを含めて) 閉じると、 System.exit(0) を呼び出してすべてのメモリを消去しますが、もちろん、終了時にサービスを実行したままにするときに呼び出すことができます。ガベージ コレクター (System.gc()) を呼び出そうとしましたが、メモリが減少して閉じることに気付いた場合でも、アプリケーションを再度開くと、同じメモリが増加します。

助けていただければ幸いです、さようなら!

4

1 に答える 1

1

私たちが持っている情報を考慮すると、問題はアクティビティ リークであると思われます。以下の2点をご確認いただけますでしょうか。

  1. 保存できるActivity Context(Activityへの参照)を使用しているかをよく確認してください。特にサービス中。
  2. 実験を試みてください - 開発者設定で「アクティビティを保持しない」を選択してください - メモリは各アクティビティの起動後に減少しますか?
于 2012-09-02T13:58:41.463 に答える