我已经实现了一个自定义相机,我希望它在一段时间后进入待机状态。备用站点来自stopPreview,摄像机释放和一个视图,告诉用户点击以退出待机状态。因为我在新线程中设置了文本,所以我得到了CalledFromWrongThreadException,但我不知道解决方案是什么。我找到了其他帖子,但没有一个真的有效。
代码:
private void initCamera()
{//more code
threadModifiedText = (TextView) findViewById(R.id.textView1);
Thread standbyThread = new Thread()
{
@Override
public void run()
{
try
{
while (timeCounter > 0)
{
if (!activeThread)
{
sleep(100);
if (timeCounter % 10 == 0)
{
threadHandler.sendEmptyMessage((int) timeCounter / 10);
}
timeCounter--;
}
}
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
mCamera.stopPreview();
mCamera.release();
TextView standbytext = new TextView(SlicesActivity.this);
standbytext.setText("Tap to exit standby mode");
FrameLayout preview = (FrameLayout) findViewById(id.FrameLayout_camera_preview);
preview.addView(standbytext);
}
};
standbyThread.start();
//more code}
和
@Override
public void onUserInteraction()
{
Log.d("~~~~~~~~~", "apasat");
activeThread = true;
timerCounter = 300;
}
private Handler threadHandler = new Handler()
{
public void handleMessage(android.os.Message msg)
{
// whenever the Thread notifies this handler we have
// only this behavior
threadModifiedText.setText("\ncounter is " + Integer.toString(msg.what));
}
};
请大家,给我一些建议。 10X
答案 0 :(得分:1)
尝试使用
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO: update your UI here
}
});
在你的线程中更新UI
答案 1 :(得分:1)
除UI线程外,您无法在任何线程内设置文本值。完成后台线程操作,并在操作结束后在UI线程中设置文本值。