Android 等待函数完成并返回响应,然后继续forloop
我是Android开发新手。我正在将值从for循环发送到打印机,我必须等待打印机的响应以发送下一个数据。 这是我的密码:Android 等待函数完成并返回响应,然后继续forloop,android,for-loop,response,wait,Android,For Loop,Response,Wait,我是Android开发新手。我正在将值从for循环发送到打印机,我必须等待打印机的响应以发送下一个数据。 这是我的密码: for (int a = 0; a<strings.size();a++) { final String ab=strings.get(a); String test1 = urat.readSerialData(path); //response from printer System.out.println(test1); if(test1=="ok
for (int a = 0; a<strings.size();a++) {
final String ab=strings.get(a);
String test1 = urat.readSerialData(path); //response from printer
System.out.println(test1);
if(test1=="ok"){
urat.writeData2Serial(ab, path);//send data from printer
}//then continue to loop
}
for(int a=0;a如果我正确理解了这个问题,您需要等待urat.readSerialData(path)
返回“ok”
,这样您就可以将数据发送到打印机。如果是这种情况,您应该在的同时循环中检查它。类似这样:
for (int a = 0; a<strings.size();a++) {
final String ab=strings.get(a);
String test1 = urat.readSerialData(path); //response from printer
while(test1!="ok"){
test1 = urat.readSerialData(path);
continue;
}
urat.writeData2Serial(ab, path);//send data from printer
}
for(int a=0;a如果我正确理解了这个问题,您需要等待urat.readSerialData(path)
返回“ok”
,这样您就可以将数据发送到打印机。如果是这种情况,您应该在的同时循环中检查它。类似这样:
for (int a = 0; a<strings.size();a++) {
final String ab=strings.get(a);
String test1 = urat.readSerialData(path); //response from printer
while(test1!="ok"){
test1 = urat.readSerialData(path);
continue;
}
urat.writeData2Serial(ab, path);//send data from printer
}
对于(int a=0;a我有一些解决方案,您可以使用线程和Join()方法等待函数完成其工作
让我们看一个例子
-首先,添加一个回调函数
interface OnComplete {
void onCompleteCall(String res)
}
-在内部循环之后,您应该传递这个回调,因为我们需要使用接口传递结果
for (int a = 0; a<strings.size();a++) {
final String ab=strings.get(a);
urat.readSerialData(path, new DashboardActivity.OnComplete() {
@Override
public void onCompleteCall(String str) {
System.out.println(str);
if(str=="ok"){
urat.writeData2Serial(ab, path);//send data from printer
}//then continue to loop
}
});
}
-最后,我们需要开始线程,这样在循环的上方下方,您可以像这样开始线程
for(Thread t : mList){
try {
t.start();
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
我对此有一些解决方案,您可以使用线程和Join()方法等待函数完成其工作
让我们看一个例子
-首先,添加一个回调函数
interface OnComplete {
void onCompleteCall(String res)
}
-在内部循环之后,您应该传递这个回调,因为我们需要使用接口传递结果
for (int a = 0; a<strings.size();a++) {
final String ab=strings.get(a);
urat.readSerialData(path, new DashboardActivity.OnComplete() {
@Override
public void onCompleteCall(String str) {
System.out.println(str);
if(str=="ok"){
urat.writeData2Serial(ab, path);//send data from printer
}//then continue to loop
}
});
}
-最后,我们需要开始线程,这样在循环的上方下方,您可以像这样开始线程
for(Thread t : mList){
try {
t.start();
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
您面临的问题是什么?是writeData2Serial
异步吗?它是否返回任何内容?writeData2Serial不返回任何内容。我将字符串发送给它进行打印。但在此之前,我必须使用“readSerialData”检查打印机是否准备就绪。我从“readSerialData”获得“ok”响应。您面临的问题是什么?是writeData2Serial
异步吗?它是否返回任何内容?writeData2Serial不返回任何内容。我将字符串发送给它进行打印。但在此之前,我必须使用“readSerialData”检查打印机是否准备就绪。我从“readSerialData”得到“ok”响应.是的,这就是我的问题。我来核实一下。是的,这就是我的问题。我来核实一下。