Ist es gut, in OnDestroy Thread.join
aufzurufen? Oder sag dem Thread einfach, er solle aufhören und ihn verlassen?Soll ich thread.join in onDestroy() aufrufen
Zum Beispiel:
public class MyActivity extends Activity {
private Thread myThread;
private volatile boolean running = true;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myThread = new Thread(new Runnable() {
public void run() {
while(running) {
// Do something
}
}
});
myThread.start();
}
public void onDestroy() {
super.onDestroy();
running = false;
try {
myThread.join(); // Is it good to calling it here? Or just let it fininsh itself?
} catch(InterruptedException e){}
}
}
ich join()
weiß Aufruf könnte den UI-Thread blockieren, aber was passieren würde, wenn die Aktivität vor dem Thread endet ohne join()
Aufruf?
Was macht das System mit den Threads, nachdem die Aktivität zerstört wurde? Wartet es auf sie, stellt sie in den Hintergrund oder tötet sie?
Nicht verwandt, aber make 'running' als' atomic' oder 'volatile'. Lesen Sie über Threads Sichtbarkeit –
@EugenMartynov Danke für die Erinnerung. Ich vergesse fast, dass es in Java ein 'volatile' gibt. – Rio6
IMO nicht Punkt in Berufung, in der Tat scheint es wie eine schlechte Idee - Blockierung der Haupt 'Thread', wenn Android dringend Ressourcen benötigt (http://StackOverflow.com/Questions/15962646/android-Thread-join-Causes-Anwendung- to-hang) –