gpt4 book ai didi

java - 如何在android studio中通过点击结束循环

转载 作者:行者123 更新时间:2023-12-01 16:53:51 24 4
gpt4 key购买 nike

我是 Android 编程新手。我正在开发一个应用程序,当按下按钮时,该应用程序将使手电筒闪烁,并在再次按下按钮时将其关闭。

目前我陷入了无限循环,我不明白如何在再次按下按钮时给它一个命令来结束循环。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

camera = Camera.open(); //opening camera hardware
params = camera.getParameters(); //getting parameters

//finding elements
final Button btn = (Button) findViewById(R.id.btn);
//accessed within inner class at onClick , so it must be declared final

btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isOn){
params.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
isOn=false;
btn.setBackgroundResource(R.drawable.btnoff);
} else {
while(!isOn) {
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
params.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
btn.setBackgroundResource(R.drawable.btnon);
isOn=true;
}
}
});
}

最佳答案

您正在做的是在主线程中运行进程(循环),这会导致 UI 被阻塞。您必须记住,您不得阻止 Android 中的 UI。

因此,您需要做的是为您的操作创建另一个线程。您可以使用 asyncTask 来完成此操作或任何您知道的多线程方法。

将会发生的是,在您的 onClickListener 中,您将只设置 isOn 的值。该进程(if-else 语句中的其他内容)必须在另一个线程上实现。

关于java - 如何在android studio中通过点击结束循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35450628/

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