사용자가 활동을 떠날 때 saveInstanceState 콜백에 타이머 값과 현재 시간을 저장하는 것이 쉽지 않습니다. 액티비티가 다시 생성되면 타이머 값에 (현재 시간 - lastSavedTime)을 더한 값을 사용하고 타이머를 설정합니다.
잘 작동해야하지만 조각과 ViewPager를 사용하면 더 좋은 방법으로이를 수행 할 수 있습니다.
이전에 ViewPager를 사용하지 않은 경우입니다. 화면을 왼쪽이나 오른쪽으로 스 와이프하여 여러보기간에 전환 할 수있는 구성 요소입니다. 기본적으로 뷰 페이저는 현재보기와 그 옆에있는보기를로드합니다. 따라서 페이지 1 (색인 0)에있는 경우 1 페이지와 2 페이지가로드됩니다. 2 페이지, 2 페이지, 1 페이지 및 3 페이지에있는 경우 등이로드됩니다. 좋은 소식은 이제 4 개 조각이로드이
mViewPager.setOffscreenPageLimit(3);
같은 간단한 코드를 사용하여 각 조각 근처에로드 할 페이지 수를 변경할 수 있습니다. 따라서 화면에 4 개의 조각이 모두로드되었습니다. developers.android.com에 따르면 다른 모든보기 (하나는 화면 제외)가로드되지만 유휴 상태이므로 조각 D 안에 타이머를 넣을 수는 없다고 생각합니다. 그러나 문제는 없습니다. 하나의 활동. 당신이 가진 유일한 활동에 타이머를 구현하면 페이지가 바뀔 때이 활동이 파괴되지 않으므로 잘 작동합니다. 그러나 사용자가 다른 앱으로 전환하여 활동이 멈출 수 있기 때문에 여전히 동일한 데이터 (타이머 데이터 + 현재 시간)를 저장해야합니다.
마지막으로해야 할 일은 조각 내의 타이머 데이터에 액세스하는 것입니다. 나는 액티비티와 프래그먼트 사이에서 통신하는 방법에 대한 튜토리얼이 너무 많기 때문에 설명하지는 않겠지 만 프래그먼트 내부에 인터페이스를 선언하고 액티비티로이 인터페이스를 구현하고 프래그먼트 내부에서이 인터페이스를 사용하여 타이머 데이터.
두 번째 솔루션은 훨씬 복잡하지만 사용자에게 더 나은 환경을 제공하고 성능이 크게 향상됩니다. 마녀가 당신에게 가장 적합하다고 결정하십시오.행운을 빌어 요
당신은 이런 종류의 작업을위한 서비스를 만드는 것을 고려해야합니다. 그렇지 않으면 D 액티비티가 무언가에 닫히고 다시 돌아올 때 다른 시간을 계산할 수 있습니다. –
Application 클래스를 사용하여 전역 데이터를 저장할 수도 있습니다 시작 시간 및 측정 시간과 같은 타이머의 값을 입력하고 이러한 저장된 값을 사용하여 활동을 입력 할 때마다 타이머를 만듭니다. – Zielony
타이머를 계속 실행하여 특정 시간에 카운트 다운 전체에 걸쳐 알람을 트리거 할 수 있습니다. 내가 서비스를 들여다 볼께. 고마워. –