문제

나는 앱 위젯을 업데이트하는 데 많은 운이 없습니다. AlarmManager 생성 된 방송. 내가하는 일은 다음과 같습니다.

초기화 AlarmManager ~에 AppWidgetProvider#onEnabled

AlarmManager alarms = (AlarmManager) context.getSystemService(
        Context.ALARM_SERVICE);
    alarms.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
    SystemClock.elapsedRealtime(), 60000, pendingIntent);

나는 또한 AlarmManager. 업데이트가 시작되면 코드가 실행됩니다 AsyncTask 그것은 네트워크 호출을 만듭니다. 때 AsyncTask 완성 됐습니다 (onPostExecute) 이전에 얻은 인스턴스를 사용합니다 AppWidgetManager 위젯을 업데이트하려면 그것은 모두 로그에서 메시지를 볼 때까지 실제로 잘 작동합니다. "Process com.foo.myapp (pid 12345) has died" 그 후 AlarmManager 다른 업데이트를 시작하지 마십시오.

알람을 다시 시작할 어떤 종류의 점검이 필요합니까? 예를 들어 사용자가 위젯의 상위 앱에 액세스 할 때? 요청의 중간에 내 앱이 사망하면 장기 실행 작업을 완료하고 위젯으로 돌아올 수 있도록하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

업데이트가 시작되면 코드가 실행됩니다.

이것이 내부에 있다면 BroadcastReceiver, 그것은 작동하지 않습니다. 당신은 a에서 나사산을 안전하게 포크 할 수 없습니다 BroadcastReceiver, 그리고 AsyncTask 효과적으로 스레드를 포크하여 작업을 비동기 적으로 수행합니다.

대신, 당신은 장기 실행 작업을 a에 위임해야합니다 서비스는 경보에서 시작되었습니다 BroadcastReceiver.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top