onStart() メソッドでスレッドを作成するアクティビティがあります。スレッドは、TCP 経由でネットワーク データを読み取るために使用され、増分ごとにブール変数をチェックする while ループ内にブロッキング ネットワーク読み取りメソッドがあります。
私の問題は、バック キーを使用してアクティビティが破棄されたときに、ブール ループ制御変数の値を 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;
}
}
このアクティビティが再度起動されたときに問題が発生するため、このようなスレッドを希望どおりに終了するにはどうすればよいですか。
実際には、アクティビティが開始されるたびに、サーバーから読み取るデータがあります