이
대답은 장치의 배터리 수명을위한 가장 적합한 방법을 결정하기가 어렵다 "위 — 중 어느 것도 응용 프로그램 위젯 업데이트를 시도하지 않습니다 분당 한 번 ". 사용자가 배터리 수명을 낭비하는 앱 개발자에게 지쳐 있기 때문에 Google은 이러한 일을하지 못하도록 막대한 노력을 기울일 것입니다.
처리기
Handler
당신이 해결하기 위해 시도하고있는 무슨과 거의있다. Handler
및 postDelayed()
을 사용하여 프로세스 내 타이밍 루프를 구현할 수 있지만 ScheduledExecutorService
과 같은 고전적인 Java 솔루션을 사용할 수도 있습니다. 그러나
이 당신을 필요로
는 모든 시간을 실행하는 프로세스가 있습니다. Android O부터 차례로 포 그라운드 서비스가 필요합니다. 즉, Notification
을 표시해야합니다. 사용자는 좋은 이유없이 시스템 RAM을 계속 소모하는 것으로 보이는 앱뿐만 아니라이 문제로 인해 짜증이납니다. 실제로, 끈적 끈적한 전경 서비스를 통해 가까운 시간에 작업을 진행할 수 있지만 항상 시간을두고 진행되는 프로세스는 가질 수 없습니다.
기기가 Android 6.0 이상에서 Doze 모드 인 경우 앱 위젯을 업데이트하지 않습니다.
기기가 잠자기 상태 일 때 앱 위젯을 업데이트하지 않습니다.
알람 관리자 것은
AlarmManager
당신은 반드시 모든 시간을 실행중인 프로세스를 가지고 있지 할 수있다. 그러나 Android 6.0 이상에서는 기기가 Doze 모드 일 때 앱 위젯을 업데이트하지 않습니다.
JobScheduler
JobScheduler
작업이 (가 실행될 때 즉, 정확히 제어하지 않음) 정확하고, 그들이 분당 한 번으로 자주 호출 할 수 있을지 모르겠어요. 또한 Android 6.0+에서 Doze 모드에있을 때 앱 위젯을 업데이트하지 않으며, Android 7.0 이상에서 일부 Doze 모드에있을 때 앱 위젯을 업데이트하지 않습니다.
중포 기지 JobDispatcher
이 우선 순위가 높은 FCM 메시지 분마다 등록을 관리하고 보내려면 서버가 당신을 필요로합니다. 내 생각에 구글은 결국 서버가 이런 일을하지 못하게 할 것이다.
SyncAdapter 당신은 동기화가 발생 정확히 제어 할 수 없습니다. 또한 Android 6.0+에서 Doze 모드에있을 때 앱 위젯을 업데이트하지 않으며, Android 7.0 이상에서 일부 Doze 모드에있을 때 앱 위젯을 업데이트하지 않습니다.
홈 화면 위젯에 디지털 시계를 보여줘야합니다. 따라서 매분마다 업데이트되는 강요가 있습니다. 두 번째 위젯에서 신선한 뉴스를 업데이트해야합니다. 따라서 매분마다 업데이트해야합니다. 또한 화면이 꺼져있을 때 위젯을 업데이트 할 필요가 없다면 Doze 모드를 신경 쓸 필요가 없다고 가정합니다. – Bishwash
@Bishwash : 시계는 앱 위젯이 아닌 홈 스크린의 기능으로 구현하는 것이 가장 좋습니다. 뉴스를 하루에 수 차례 업데이트하거나 사용자 요청에 따라 매분마다 뉴스를 업데이트하는 것보다 * 낫습니다. – CommonsWare
30 분마다 또는 1 시간마다 업데이트하는 것과 동일한 질문을하면 대답은 어떻게 변할 것입니까? – Bishwash