Android 为什么线程创建失败?
我想在无限循环中打开/关闭闪光灯,所以当它打开时,应该等待5秒,然后关闭,然后等待5秒再次打开,依此类推。。。 我怎么能做到 这是我的密码:Android 为什么线程创建失败?,android,multithreading,wait,Android,Multithreading,Wait,我想在无限循环中打开/关闭闪光灯,所以当它打开时,应该等待5秒,然后关闭,然后等待5秒再次打开,依此类推。。。 我怎么能做到 这是我的密码: b2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated metho
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// num = Integer.parseInt(n.getText().toString());
while(bl){
if(camera == null){
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
turnOn();
}
});
}
}).start();
}
else{
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
turnOff();
}
});
}
}).start();
}
}
}
});
尝试类似的方法,使用而不是(丑陋的)线程。sleep():
我建议不要使用
Thread
s来实现这一点。为什么不使用Runnable
类并通过处理程序延迟发布它呢?例如:
Handler handler = new Handler(); // make this a member variable of your class
boolean isOn = false; // make this a member variable of your class
final Runnable flashRunnable = new Runnable() {
@Override
public void run() {
if (isOn) {
turnOff();
isOn = false;
} else {
turnOn();
isOn = true;
}
handler.postDelayed(flashRunnable, 5000);
}
};
handler.postDelayed(flashRunnable, 5000);
如果您需要在UI线程上的Runnable
中运行代码,您甚至可以在视图上调用postDelayed
,而不是创建处理程序
您不能在UI线程上放置无限循环,首先,你真的知道线程是做什么的吗?我想你的意思是让有限循环进入线程内部,而不是创建无限多的线程
Handler handler = new Handler(); // make this a member variable of your class
boolean isOn = false; // make this a member variable of your class
final Runnable flashRunnable = new Runnable() {
@Override
public void run() {
if (isOn) {
turnOff();
isOn = false;
} else {
turnOn();
isOn = true;
}
handler.postDelayed(flashRunnable, 5000);
}
};
handler.postDelayed(flashRunnable, 5000);