2014-12-18 3 views
0

내 앱의 '통계'페이지에 '재생 시간'행 추가에 관심이 있습니다. 그러나 내 애플 리케이션이 열리는 시간을 측정하는 좋은 방법이 필요합니다. 이것을 설정하는 가장 효과적이고 효율적인 방법은 무엇입니까? 내 앱은 여러 액티비티로 구성되어 있으므로 모든 액티비티를 실행할 수 있어야합니다. MainActivity가 닫히지 않으며 onFinish()를 닫는 다른 활동이 열립니다. 그래서 MainActivity 동안 타이머를 실행할 수있을 것 같아요?앱이 실행되는 시간을 측정하는 타이머 설정

답변

1

공유 환경 설정을 사용하고 응용 프로그램이 시작될 때 시작 시간을 저장하십시오.

System.currentTimeMillis() // 현재 시간 (밀리 초).

SharedPreferences preferences = context.getSharedPreferences("SomeApp", 0); 

    SharedPreferences.Editor editor = preferences.edit(); 
    editor.putLong("startTime", System.currentTimeMillis()); 
    editor.commit(); 

그리고 어느 시점에서이 값을 끌어와 시간이 연주 계산할 수 있습니다 시작

.

SharedPreferences preferences = context.getSharedPreferences("SomeApp", 0); 
    long start = preferences.getLong("startTime"); 

    long timeRunInMillis = System.currentTimeMillis() - start; 

timeRunInMillis는 응용 프로그램이 밀리 초 단위로 실행되는 시간입니다.

1

onResume에서 타임 스탬프를 가져와 onPause에서 새로운 타임 스탬프를 가져 와서 차이를 저장하십시오. 이 두 메서드는 모두 Activity 라이프 사이클의 일부로 호출 될 수 있습니다. 포어 그라운드에있는 주요 활동 범위가 충분하지 않은 경우 사용자 환경 설정을 사용하여 값을 저장하거나 새 활동으로 전달할 수 있습니다.

+0

감사합니다.이 방법을 살펴 봐야 할 것입니다. :) 연구 시간! –

1

또한 타임 스탬프를 사용하면 스레드를 실행하지 않고 메모리, CPU 등과 같은 시스템 리소스를 사용하지 않는 것이 좋습니다. 응용 프로그램의 시작/완료시 타임 스탬프를 사용하는 것이 더 효율적이어야합니다.

관련 문제