백그라운드에서 주기적으로 (10 초) 몇 가지 작업을 실행해야하는 애플리케이션을 개발 중입니다. 이를 위해 저는 서비스와 타이머를 사용합니다. 타이머에서 수행 할 실제 작업은 다음과 같습니다.
1) 전화 (ContentResolver 사용)에서 SQLite 데이터베이스로 데이터를 수집하는 경우
2)이 데이터를 HttpPost 메서드를 사용하여 원격 서버에 동시에 전송합니다.안드로이드 타이머 및주기 변경하기
문제는 다음과 같습니다. 일부 반복 (이 반복 횟수로 인해 앱이 실행될 때마다 변경됨) 타이머는 기간을 변경하고 모든 작업을 1-3 초 (때로는 최대 9 개)로 시작하지만 때로는 낮아집니다 10 초) 지연, 내 경우에는 너무 빠르며 이유를 찾을 수 없습니다. 전에 비슷한 행동을 한 사람이 있습니까?
나는 타이머 작업 내에서 업로드 및 수집을 위해 다른 스레드를 사용하려고 시도했지만 문제를 해결하지 못했습니다.
여기에 내 코드 조각입니다 :
public class DataForward extends Service{
private Context con = getBaseContext();
private Timer timer = new Timer();
<...>
@Override
public void onStart(Intent intent, int startId) {
timer.schedule(new TimerTask(){
@Override
public void run() {
try {
updateData();
NetworkManager network = new NetworkManager(con);
if(network.isConnectedToTheInternet())
uploadData();
} catch (Exception e) {
e.printStackTrace();
}
}}, 0, 10000);
}
}
<...>
}
아니면 실제 타이머없이이 작업을 수행하는 또 다른 방법이있다? 어떤 아이디어?