我正在尝试使用Android相机拍照。程序首次启动时我需要等待1秒左右才能启动预览并拍摄照片。我用Handler.postDelayed做到了,它工作正常。
现在,我的问题是我想暂停程序的流程,直到执行run(),其中我使用带有标志的while(true)循环来表示方法已经完成。但是,该程序冻结了。没有返回错误。有人可以点灯吗?以下是我的代码
flag = false;
handler.postDelayed(new Runnable() {
public void run()
{
preview.camera.takePicture(shutterCallback, rawCallback, jpegCallback);
preview.camera.startPreview();
flag = true;
}
}, 1000);
while (true)
{
if (flag) break;
}
答案 0 :(得分:1)
删除while(true)
,它应该继续,让我解释一下:
Android有一个任务队列,因此当完成当前任务时,它将转到下一个任务,因此在你的情况下,PostDelayed
将在完成当前Infinity loop
后执行,这将是永远不会完成,因为循环阻塞了队列中的Runnable
。
所以最好的方法是删除Infinity loop
,并在runnable调用结束时继续使用流程或监听器的方法。