java - 在循环中执行重处理方法

标签 java android loops methods

我开发了我的第一个 Android 应用程序,它读取收到的短信并执行短信中的命令,例如:

bluetooth(on);data(off);wifi(on);device(vibrate);

我像这样将命令分成数组

String[] array = sms.split(";");

所以我有

bluetooth(on) data(off) wifi(on) device(vibrate)

然后在循环中我对数组执行一些操作,如下所示

for(String s:array){
  String function_name = s.substring(0,s.indexOf("("));
  String function_arg = s.substtring(s.indexOf("(")+1,s.indexOf(")"));
}

所以对于其中任何一个我都有:

function = bluetooth and argument = on
function = data and argument = off
function = wifi and argument = on
function = device and argument = vibrate

现在我已经宣布了

public void Bluetooth(int arg){
//
}
public void Data(int arg){
//
}
public void Wifi(int arg){
//
}
public void Device(int arg){
//
}

我声明的所有方法都工作正常,我的意思是当我调用蓝牙(1)时,我的服务会打开蓝牙,或者我调用设备(2)时,它将设备设置为振动模式。它没有问题,但是当我在循环中调用这个方法时,只有第一个方法执行,而其他方法则默默地失败。例如: 我的短信是“设备(振动);数据(打开);蓝牙(关闭);” 当我执行循环中的每个命令时,仅执行第一个命令(无论哪个是第一个),而其他命令则默默地失败。 我的整个代码是:

for(String function:functions){
String funcname = function.substring(0,function.indexOf("("));
String funcarg = function.substring(function.indexOf("(")+1,function.indexOf(")"));     
int arg = -1;
if(funcarg.equals("on")){
arg = 1;
}else if(funcarg.equals("off")){
arg = 0;
}else if(funcarg.equals("vibrate")){
arg = 2;
}else if(funcarg.equals("normal")){
arg = 3;
}else if(funcarg.equals("silent")){
arg = 4;
}else if(funcarg.equals("in")){
arg = 5;
}else if(funcarg.equals("out")){
arg = 6;
}else if(funcarg.equals("missed")){
arg = 7;
}else if(funcarg.equals("all")){
arg = 8;
}else if(funcarg.equals("draft")){
arg = 9;
}       
if(funcname.equals("bluetooth")){
Bluetooth(arg);
}else if(funcname.equals("device")){
Device(arg);
}else if(funcname.equals("data")){
Data(arg);
}else if(funcname.equals("wifi")){
Wifi(arg);
}else if(funcname.equals("unlog")){
Unlog(arg);
}else if(funcname.equals("clearsms")){
ClearSms(arg);
}else if(funcname.equals("contact")){
Contact(arg);
}else if(funcname.equals("sync")){
Sync(arg);
}
}

想象我的功能是= {"bluetooth(on)","device(vibrate)","wifi(off)","data(on)",...} 我的代码应该调用 bluetooth(1) device(2) wifi(0) data(1) 但只执行第一个。提前致谢。

最佳答案

也许您正在使 UI 线程重载。尝试使用AsyncTask执行接收到的命令。

关于java - 在循环中执行重处理方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24754338/

相关文章:

java - 给定一个 obj-c 无符号字节数组,如何在 Java 中获得等效的字节值?

python - 多个循环创建绘图的问题,出现错误

java - 循环不递增

java - 在 Java 中,锁定是否确保读取和写入非 volatile 位置的正确顺序

java - 使用 XMPP 获取非 SASL 身份验证问题

Java - 加载 JTabbedPane 一个又一个选项卡

android - 应用程序无法从本地化文件夹读取字符串

java - Firebase - 远程配置应用程序更新

java - Android 中的 JSON 对象

objective-c - 设置定时器循环固定时间