Я разработал приложение вызова auto-. Приложение читает текстовый файл, который содержит список телефонных номеров и вызывает несколько секунд, завершает вызов, а затем повторяет.
Моя проблема в том, что приложение не отправляет вызовы через 10-16 часов. Я точно не знаю причины, но я думаю, что проблема в использовании ЦП. Загрузка моего приложения почти на 50%! Как уменьшить использование ЦП?
Вот часть исходного кода:
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% вашего процессора, заключается в том, что Android, по-видимому, не позволит ему использовать 100% процессора, который обычно будет иметь такой же цикл, как у вашего TimeDelay()
. (Или у вас есть два процессора, и на самом деле он использует 100% одного процессора.) То, что вы делаете, называется ожидание ожидания и должно быть очевидно, почему постоянная проверка состояния будет использовать множество процессоров. Так что не делай этого. Вместо этого используйте Thread.sleep()
. Тогда ваше приложение не будет использовать никакой процессор во время ожидания.
Кроме того, ради Бога, почему вы передаете строку, а затем parseInt
ing, а не просто передаете Integer
в первую очередь?: -)
Если ваш метод занимает много времени, особенно цикл while. Вы должны положить Thread.sleep(50)
внутри своего цикла. Это заставляет процессор обрабатывать другие процессы.
Ваш процессор будет уменьшен. Не уверен, но вы должны попробовать. Надеюсь, вы получите хороший результат.
TimeDelay()
?