0

Ich schreibe auf die gemeinsamen Einstellungen, wenn überhaupt ich eine bestimmte Broadcast-Nachricht von einem Dienst, den ich ausgeführt habe. Ich möchte wissen, ob dies zu einem Speicherverlust führt. Wenn ja, wie kann ich es beheben. Ich werde diesen Code immer 20-25 Minuten lang ausführen müssen. Mache den alten Faden sterben?Android-Thread-Speicher Leak

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

Warum würden Sie denken, dass dies zu einem Speicherleck führen würde? Was denkst du, könnte undicht sein? –

+1

@ JamesKPolk- Ich weiß, dass Threads Speicherverluste verursachen können, deshalb frage ich – amanda45

+5

Ich habe einen Vorschlag für Sie. Entfernen Sie diesen Thread vollständig und schreiben Sie einfach den Code: 'sharedData.edit(). PutInt (" Value ", 1) .apply();' Es wird viel VIEL effizienter sein. – Budius

Antwort

0

Nein, es kann einige UI-Schluckauf verursachen. Die Commit-Operation ist sehr schnell und wird die äußere Klasse nicht zu lange halten. Aber Sie verwenden besser die apply() -Methode, die die Operation im Hintergrundthread ausführt. Im Allgemeinen treten Lecks auf, wenn Sie sich auf die "großen" Objekte wie Aktivität beziehen und deshalb nicht zerstört werden können.