我有一个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