제발 몇 가지 작업을 수행하는 사이에 경과 시간을 얻는 데 문제가 있습니다. 이 코드는 1 분 (60,000 밀리 초) 후에 액션을 수행하기위한 것이지만, 에뮬레이터에서 코드를 실행할 때 일반적으로 경과 시간의 차이는 예상보다 작고 종종 Thread.sleep()의 값에 가깝습니다. System.nanoTime() 및 심지어 SystemClock.uptimeMillis() 사용하여 시도했다 ... 나는 정상적인 Java 환경에서 비슷한 일을 그것은 잘 작동했다. 에뮬레이터에서 문제가 발생할 수 있으며이를 수행 할 수있는 방법이 있습니까? 당신이 while
루프에서 startTime
를 할당하고 그 그것은 당신로만 스레드 수면 시간으로 계산됩니다 있도록 루프의 마지막 반복에서 해당 시간에 할당한다는 것을 의미하기 때문이다System.currentTimeMillis를 사용한 경과 시간이 안드로이드에서 작동하지 않습니다
long startTime=0;
long elapsedTime=0;
long totalTime = 0;
@Override
public void run() {
// TODO Auto-generated method stub
while (running) {
startTime = System.currentTimeMillis();
totalTime += elapsedTime;
Log.d("elapsed","displaying time...."+elapsedTime);
if(totalTime > 60000){
Log.d("mins","one mins gone");
totalTime = 0;
}
// do some other things here
try {
Thread.sleep(9000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
elapsedTime = System.currentTimeMillis() - startTime;
}
}
endTime 변수는 어디에 선언 했습니까? – Abdi
1 분마다 한 번 동작을 수행하고 'ACTION_TIME_TICK'을 듣기 위해 등록 된 'BroadcastReceiver'를 사용하면됩니다. http://developer.android.com/reference/android/content/Intent.html을 참조하십시오. #ACTION_TIME_TICK – Squonk
@Abdi thnx가이를 알았습니다. 그것 elapsedTime 일 예정이다 – user3572546