gpt4 book ai didi

java - For 循环使用 Thread.Sleep 跳过两次迭代

转载 作者:行者123 更新时间:2023-12-02 04:02:19 30 4
gpt4 key购买 nike

我制作了一个 Android 应用程序,它只需调用您输入的号码范围即可。从您输入的起始编号开始,以您输入的“完成”编号结束。响铃 7 秒后应用程序自动挂断。代码如下。

public void onClick(View view){

EditText starte = (EditText) findViewById(R.id.start);
EditText finishe = (EditText) findViewById(R.id.finish);
EditText prefixes = (EditText) findViewById(R.id.prefixes);

String prefix = prefixes.getText().toString();
/** Get Telephone number String **/
int startOriginal = Integer.parseInt(starte.getText().toString());
int finish = Integer.parseInt(finishe.getText().toString());

for (int start = startOriginal; start<=finish; start++) {

startCall(prefix, Integer.toString(start));

try {
Thread.sleep(7000);
}catch(InterruptedException e){
e.printStackTrace();
}


}

new CallUtilities("endcall");
}

private void startCall(String prefix, String nr){

Intent intent = new Intent("android.intent.action.CALL");

Uri data = Uri.parse("tel:"+ prefix + nr);

/** Setting intent data */
intent.setData(data);

/** Starting the caller activity by the implicit intent */
startActivity(intent);
}

CallUtilities类是我写的,只是通过反射方法结束调用。现在我的问题是,当您输入起始数字和结束数字时,应用程序似乎总是调用第一个数字,例如 1,挂起后它会直接转到 3,然后转到 4 和 5 等等,就像它应该做的那样。知道哪里出了问题吗?另外,是否可以在此处使用 DisconnectCause 来获取断开连接的原因,以防调用过早挂断?预先感谢您!

最佳答案

这是一场灾难。由于一些原因。

您(假设 onClick(View v) 在 UI 线程上运行)尝试 hibernate UI 线程。

如果UI线程挂起时间超过5秒,就会导致ANR。

此外,您似乎正在尝试同时启动多个 Activity 。这当然不是设计应用程序的正确方法。

更不用说使用Reflection来访问核心Android组件来结束调用了。这可能会导致您的应用将来出现问题。

我对多项 Activity/ sleep 问题的建议:

  1. 删除循环
  2. 存储下一个尝试的号码
  3. 运行调用函数
  4. onActivityResult您可以确定下一个要尝试的号码
  5. 转到 2。(确保包含结束条件!

关于java - For 循环使用 Thread.Sleep 跳过两次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34766259/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com