我正在编写这个应用程序,我从tcp连接获取实时图像,我需要在ImageViev上显示它们.
我正在做的是在按钮点击内调用asynctask.但它似乎创建了许多后台线程.
这是按钮单击事件的代码
btnLive.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try
{
String name = ((Button)v).getText().toString();
if(name.equalsIgnoreCase("Live"))
{
DataOutputStream dos;
DataInputStream dis;
String reply;
if(config.conn.isConnected())
{
dos = new DataOutputStream(config.conn.getOutputStream());
dos.writeBytes("STREAM-LIVE-IMAGES");
dos.flush();
//dis = new DataInputStream(in);
in = config.conn.getInputStream();
while (true)
{
new myTask().execute(in);
}
}
}
}
catch(Exception ex)
{
Log.d("Live Button ","Exception " + ex.getMessage() );
}
}
});
这是asyncTask的代码
class myTask extends AsyncTask
最佳答案
while (true) {
new myTask().execute(in);
}
因为你在循环中执行AsyncTask,在你的情况下是无限循环,听起来不是很好,你需要改变它.
你需要在循环之外执行.你不应该,不这样做.
打电话吧
new myTask().execute(in);
没有循环.