gpt4 book ai didi

java - 当 AsyncTask 也使用另一个线程时如何设置延迟时间?

转载 作者:太空狗 更新时间:2023-10-29 15:04:38 26 4
gpt4 key购买 nike

我想为扩展 AsyncTask 的类设置延迟时间(以毫秒为单位)。但是这个类也在使用另一个java线程。有一些类可以在 Android 上流式传输 Mjpeg,并对此问题进行了一些更改:Android ICS and MJPEG using AsyncTask

这是我扩展 AsyncTask 的类:

public class GetCameraMjpeg extends AsyncTask<String, Void, MjpegInputStream> {

@Override
protected MjpegInputStream doInBackground(String... params) {
try {
URL url = new URL(params[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
if (username != null && password != null) {
String authEncoded = Base64.encodeToString((username + ":" + password).getBytes(), Base64.DEFAULT);
connection.setRequestProperty("Authorization", "Basic " + authEncoded);
}
connection.connect();
return new MjpegInputStream(connection.getInputStream());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

@Override
protected void onPostExecute(MjpegInputStream result) {
mjpegView.setSource(result);
mjpegView.setDisplayMode(MjpegView.SIZE_FULLSCREEN);
}
}

MjpegInputStream 类与上面粘贴的 Stackoverflow 问题相同。 MjpegView 是扩展 SurfaceView 的类。它包含内部类 MjpegViewThread 是扩展 java Thread 类的类。这是该线程的 run 方法。

@Override
public void run() {
Bitmap bitmap;
Rect destRect;
Canvas canvas = null;
while (mjpegRun) {
if (surfaceDone) {
try {
canvas = surfaceHolder.lockCanvas();
if (canvas != null) {
synchronized (surfaceHolder) {
try {
bitmap = mjpegInputStream.readMjpegFrame();
if (displayMode != SIZE_FULLSCREEN) {
displayWidth = bitmap.getWidth();
displayHeight = bitmap.getHeight();
}
destRect = destRect(bitmap.getWidth(), bitmap.getHeight());
canvas.drawColor(Color.TRANSPARENT);
canvas.drawBitmap(bitmap, null, destRect, new Paint());
} catch (IOException e) {
e.getStackTrace();
Log.d(TAG, "catch IOException hit in run", e);
}
}
}
} finally {
if (canvas != null) {
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
}
}

我试过这个答案:How to execute Async task repeatedly after fixed time intervals但没有明显的区别。我想是 MjpegView 运行了它自己的 java Thread

最佳答案

使用处理程序 处理程序 h = new 处理程序(); h.postDelay(函数, 时间);

关于java - 当 AsyncTask 也使用另一个线程时如何设置延迟时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23216596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com