현재 새 방책을 제외하고는 거의 작업중인 앱을 수행하고 있습니다.계류중인 의도에 전달 될 때 정적 메소드의 인 텐트가 null입니다.
내 앱에는 의도 한대로 작동하는 서비스 알람이 포함되어 있으며, 그 안에있는 의도는 설정 한 정확한 시간에 작동하며 그 밖의 모든 것이 정상적으로 작동합니다. 그러나, 내 애플 리케이션은 당신이 그것을 켜고 끌 수있는 메뉴 버튼이 있습니다. IntentService에서이 메서드를 호출하여 반환 된 부울 값에 따라 "Turn Alarm On"또는 "Turn Alarm Off"로 표시할지 여부를 확인합니다. 사용자의 선택 (설정 또는 해제)은 공유 환경 설정에서도 유지되며, 이는 또한 내 로그 명령문이 말한 바를 정확하게 저장합니다. 문제는 기기를 재설정 할 때 앱의 모든 것이 올바르게 작동하고 환경 설정이 저장된다는 것입니다. 앱이 처음 실행될 때이 메소드가 false를 반환하면 메뉴 항목이 올바르게 업데이트되지 않습니다.
재설정시, 아래의 방법으로 false가 표시되어 실제로 메뉴 버튼에 "켜기"가 표시됩니다. 한 번 클릭하면 알람이 꺼지지 만 텍스트는 변경되지 않지만 버튼은 작동합니다. 두 번째 클릭하면 "알람 끄기"로 의도 된대로 다음 변경 사항이 적용되고 알람이 다시 울린 다음 의도 한대로 작동합니다. 아래는 문제의 방법입니다. 디버깅 할 때 PendingIntent로 전달 될 때 내가 만든 의도의 모든 항목이 null이라는 것을 보여 주지만 그 이유는 알 수 없습니다.
public static boolean isServiceAlarmOn(Context context)
{
Intent i = new Intent(context.getApplicationContext(), CommuteCheckAlarmService.class);
PendingIntent pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_NO_CREATE);
Log.i(ALARM_SERVICE, "Checking isServiceAlarmOn, pi is NOT null is " + (pi != null) + "and the intent is not null" + (i != null));
return pi != null;
}
아무도 장치 재설정시이 동작을 일으키는 이유가 무엇입니까? 에뮬레이터에서 실행 중이며 경보를 끄는 기본 설정도 올바르게 저장됩니다.
업데이트 : 에뮬레이트 된 기기를 켜고 일반 사용자처럼 기기 내에서 앱을 시작하기보다는 Android 애플리케이션으로 실행하여 에뮬레이터에서 앱을 실행하는 경우 문제가 발생합니다. 누구나 위의 동작이 Android 애플리케이션으로 실행되는 동안 구체적으로 발생하는 이유를 알고 있습니까?
(다시) 앱을 설치하면 이전의 'PendingIntent'가 발생하고 알람이 소멸됩니다. – corsair992
그럴 가능성이 가장 높습니다. 해결되지 않은 것 같지만,이 시점에서 내 앱이 작동한다고 말할 수 있습니다. –