Android의 AlarmManagers는 전화가 끊어지면 등록 된 모든 알람을 잃습니다.BroadcastReceivers는 BOOT_COMPLETED를 청취 할 때 어떤 컨텍스트를 수신합니까?
나는 안드로이드 부팅시 실행하는 데 다음과 같은 방송 수신기를 사용
방송 수신기의 onReceive가 시스템 부팅시 실행됩니다public class AlarmBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
Cursor alarmCursor = MainActivity.dbHelper.loadAlarms();
// Iterate through every stored alarm and set those alarms.
// ....
alarmCursor.close();
}
}
}
, 어떤 컨텍스트 매개 변수는 메소드에 주어진? 컨텍스트에서 설정 한 알람을 취소하는 컨텍스트가 필요하기 때문에 컨텍스트를 알아야합니다.
시스템 부팅시 MainActivity가 초기화되지 않았기 때문에 MainActivity.dbHelper.loadAlarms() 호출이 안전하지 않다고 가정합니다. 또는 dbhelper 및 loadAlarms()가 모두 초기화되고 정적으로 선언 되었기 때문에 안전합니까?
컨텍스트 유형이 중요하지 않습니다. 더 중요한 것은 스스로 처리해서는 안됩니다. 프레임 워크 나 Google 도서관에는 여러 가지 해결책이 있습니다. 첫 번째 옵션 : Job sheduler api. 두 번째 옵션 : GcmNetworkMamager를 사용하여 예약 된 작업. 기타 ... –