Java 在循环中执行繁重的处理方法

Java 在循环中执行繁重的处理方法,java,android,loops,methods,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 functi

我开发了我的第一个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);
}
}
假设我的功能是=
{“蓝牙(打开)”,“设备(振动)”,“wifi(关闭)”,“数据(打开)”,…}

我的代码应该调用
蓝牙(1)设备(2)wifi(0)数据(1)
,但只执行第一个。提前感谢。

首先,不要使用那些if/elseif链,而是使用Switch语句来清理代码并添加一些缩进。这使我们更容易阅读代码并帮助您


您在问题中提到了一个循环,但我在代码中看不到一个循环。这可能是您的问题,因为最后一个代码块将只运行一次并退出,除非从其他地方多次调用它

可能您正在重载UI线程。尝试使用执行收到的命令。

我将所有.equals()转换为.contains(),然后它给出了我想要的结果。

eclipse不允许我对字符串使用swtich语句。抱歉,我最近使用VB太多了。你说得对,这是办不到的,没关系。我的代码似乎是编写的,因为当我为它运行的每个命令吐司一条消息时,这里失败了。问题是没有循环。不管你给它加多少参数,它只会在代码中运行一次。我想你看不到for语句,这是一种循环。你能指导我怎么做吗?你可以在网上找到很多例子,即使在这里:我知道,但在我的情况下,我想它会复杂得多。