Tôi đang viết ứng dụng này, nơi tôi nhận được hình ảnh trực tiếp từ một kết nối TCP và tôi cần hiển thị chúng trên ImageViev.Làm thế nào để gọi một asynctask bên trong một sự kiện bấm nút
Điều tôi đang làm là gọi asynctask bên trong nút bấm. nhưng nó dường như tạo ra một số chủ đề nền.
đây là mã cho sự kiện nhấn nút
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());
}
}
});
và điều này mã cho AsyncTask
class myTask extends AsyncTask<InputStream, Integer, Bitmap> {
protected Bitmap doInBackground(InputStream...in)
{
Bitmap bmp = null;
try
{
//Do some none UI stuff here and return a value *result
byte[] rcvPacket = ReadJpegBinaryAndRemoveDelimiter(in[0]);
bmp = BitmapFactory.decodeByteArray(rcvPacket, 0, rcvPacket.length);
Log.d("Live Image Streaming ", "Recieved Images: " + rcvPacket.length + " " + bmp);
} catch (Exception e) {
e.printStackTrace();
}
return bmp;
}
các
Bạn không thể thực thi bao nhiêu AsyncTask như bạn muốn. Có giới hạn cho điều đó. – ania
Tôi đoán sẽ tốt hơn khi triển khai Dịch vụ để tải lên. Chạy Dịch vụ này và chuyển đến đó bitmap của bạn. – Yury