我有一個Activity在onStart()方法中創建線程。 線程用於通過TCP讀取網絡數據,並在while循環內具有阻塞網絡讀取方法,該方法檢查每個增量上的布爾變量。活動時Android停止線程在銷燬時的活動
我的問題是,當使用後退鍵銷燬活動時,我將布爾循環控制變量的值設置爲false,但線程無法完成,因爲它卡在阻塞網絡方法中。
public class MyActivity extends Activity implements Runnable
{
Thread thread;
boolean loopControl;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
protected void onStart()
{
super.onStart();
loopControl=true;
thread = new Thread(this);
thread.start();
}
public void run()
{
while(loopControl)
{
directories = (Vector<String>) TCPFunctions.inputStream.readObject();
}
}
protected void onDestroy()
{
super.onDestroy();
loopcontrol = false;
}
}
我怎麼完成這樣的線程,因爲我希望它,因爲它在這個活動再次啓動造成了一個問題。
其實每次活動開始它的時候有一些數據從您的onDestroy()方法的服務器
沒有幫助,舊的線程仍然運行,並且在活動在銷燬後再次啓動時再次創建新線程。當活動再次啓動時,它會從服務器獲取一些實際上由舊線程讀取的初始化數據,並將新線程留空(檢查我的文章的最後一行,只是更新) – Anjanu 2012-08-04 21:18:24
@Anjanu嘗試在一個實現Runnable除了MainActivity之外的其他類。 – kalz 2012-08-04 21:36:49
確定將嘗試並在以後報告 – Anjanu 2012-08-04 21:49:47