我是Android编程的新手,我曾经编程微控制器,现在我需要你们的一些帮助。 我想在重复调用每个函数后直接调用两个函数,直到按下停止按钮。
btnStart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//I want perform these series of function repeatedly
//until stop button pressed
while(true){
bluetoothDisconnect();
delay(3000);
bluetoothConnect();
delay(3000);
if(status == true){
break;
}
}
}
});
btnStop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
status = true;
}
});
非常感谢,
答案 0 :(得分:1)
您需要在btnStart中编写代码,否则它将锁定GUI。很抱歉没有更多帮助,我使用Mono(C#)编写Android应用程序,我不确定如何用Java编写。
答案 1 :(得分:0)
试试这个:
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
status = false;
Thread t = new Thread(new Runnable() {
@Override
public void run() {
doLoop();
}
});
t.start();
}
});
btnStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
status = true;
}
});
,其中
private void doLoop(){
do {
bluetoothDisconnect();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
bluetoothConnect();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} while (!status);
}
和status
是一个全局变量,默认为FALSE (声明为boolean status = false
)
此代码作为一个简单的解决方案,但我建议您查看AsyncTask
类:
http://developer.android.com/guide/components/processes-and-threads.html
答案 2 :(得分:0)
创建一个处理程序来延迟任务。
创建可运行的线程并运行您的处理程序,如:
Handler mhandler=new Handler();
Runnable mRunnable=new Runnable() {
@Override
public void run() {
bluetoothDisconnect();
btnStart.performClick() ;
}
};
btnStart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//I want perform these series of function repeatedly
//until stop button pressed
while(true){
bluetoothconnect();
mhandler.postDelayed(mRunnable,3*1000);
if(status == true){
break;
}
}
}
});