【发布时间】:2011-06-04 02:16:49
【问题描述】:
我开发了一个自动呼叫应用程序。该应用程序读取一个包含电话号码列表的文本文件并呼叫几秒钟,结束呼叫,然后重复。
我的问题是应用程序在 10~16 小时后不发送呼叫。我不知道确切的原因,但我想问题是 CPU 使用率。我的应用程序的 CPU 使用率几乎是 50%!如何减少 CPU 使用率?
这里是部分源代码:
if(r_count.compareTo("0")!=0) {
while(index < repeat_count) {
count = 1;
time_count = 2;
while(count < map.length) {
performDial(); //start call
reject(); //end call
finishActivity(1);
TimeDelay("60"); // wait for 60sec
count = count + 2;
time_count = time_count + 2;
onBackPressed(); // press back button for calling next number
showCallLog();
finishActivity(0);
}
index++;
}
这是TimeDelay()方法来源:
public void TimeDelay(String delayTime) {
saveTime = System.currentTimeMillis()/1000;
currentTime = 0;
dTime = Integer.parseInt(delayTime);
while(currentTime - saveTime < dTime) {
currentTime = System.currentTimeMillis()/1000;
}
}
TimeDelay() 在 while 循环中重复了几次。
【问题讨论】:
-
没有办法说,因为我们不知道你调用的函数中发生了什么,为什么你使用了 50% 的 CPU。如果您想要一种简单的方法来降低平均 CPU 使用率,您可以将时间延迟增加到 60 秒以上。
-
考虑使用从 Timer 调度的 TimerTask,而不是 while 循环。它更加优化,您不必自己管理线程的睡眠/通知调用。