0

私が実行しているサービスから特定のブロードキャストメッセージを受け取ったときに、共有プリファレンスに書き込みます。私はこれがメモリリークを引き起こすかどうか知りたいですか? もしそうなら、どうすれば修正できますか?私はこのコードを20〜25分実行する必要があります。古いスレッドは死んでいますか?Androidスレッドメモリリーク

if(Wifi_Connected) 
{ 

    Thread thread2= new Thread(new Runnable() { 
           @Override 
           public void run() { 
            SharedPreferences.Editor e = sharedData.edit(); 
            e.putInt("Value",1); 
            e.commit(); 
           } 
          }); 

        thread2.start(); 

} 
+1

なぜメモリリークが発生すると思いますか?何が漏れていると思いますか? –

+1

@ JamesKPolk-私はスレッドがメモリリークを引き起こす可能性があることを知っています。それは私が尋ねる理由です – amanda45

+5

私はあなたのための提案があります。このスレッドを完全に削除し、コードを書いてください: 'sharedData.edit()。putInt(" Value "、1).apply();'これはずっと効率的です。 – Budius

答えて

0

いいえ、いくつかのUIの不具合が発生する可能性があります。コミット操作は非常に速いため、外部クラスを長時間保持することはありません。しかし、バックグラウンドスレッドで操作を実行するapply()メソッドを使うのが良いでしょう。 一般に、活動のような「大きな」オブジェクトへの参照を保持すると、リークが表示されます。そのため、破棄できません。

関連する問題