[英]terminate a thread when exiting an activity (android)
我在Android的輔助活動中創建了一個線程,如下所示:
new Thread(new Runnable() {
public void run() {
try {
String branch=spinner.getSelectedItem().toString();
while( branch.equals(spinner.getSelectedItem().toString())){
System.out.println("----LOOPER."+spinner.getSelectedItem().toString());
GetQinfo a= (GetQinfo) new GetQinfo().execute(city,type,org,spinner.getSelectedItem().toString());
Thread.sleep(refreshRate);
}
} catch (InterruptedException e){
e.printStackTrace();
}
return;
}
}).start();
問題是,當我返回主活動時,該線程仍在運行。 我所做的是在goback按鈕上編寫以下代碼:
spinner.setSelection(0);
this.finish();
這樣,更改微調器的值,從而導致線程上的while循環返回false,從而退出線程。 但是我不認為這是正確的方法。 誰能提出一些不同的建議,或者我應該說更好
離開活動時,應使用線程的interrupt()方法。
YourThread.interrupt();
new Thread(new Runnable() {
public void run() {
try {
if(!Thread.interrupted())
String branch=spinner.getSelectedItem().toString();
while( branch.equals(spinner.getSelectedItem().toString())){
System.out.println("----LOOPER."+spinner.getSelectedItem().toString());
GetQinfo a= (GetQinfo) new GetQinfo().execute(city,type,org,spinner.getSelectedItem().toString());
Thread.sleep(refreshRate);
}
} catch (InterruptedException e){
e.printStackTrace();
}
return;
}
}).start();
沒有明確可用的方法來停止線程。 以前有一些方法可以停止線程,但是不建議使用。 請閱讀以下鏈接,以了解Java開發人員為何如此希望這樣做: http : //docs.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html
根據本文檔,他們希望您按照建議的方式進行操作。 所以你沒看錯。
private volatile boolean stopThread;
public void run() {
String branch=spinner.getSelectedItem().toString();
while (!stopThread) {
System.out.println("----LOOPER."+spinner.getSelectedItem().toString());
GetQinfo a= (GetQinfo) new GetQinfo().execute(city,type,org,spinner.getSelectedItem().toString());
Thread.sleep(refreshRate);
}
}
public void stopThread() {
stopThread = true;
thread.interrupt();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.