2015-02-04 1 views
2

현재 새 방책을 제외하고는 거의 작업중인 앱을 수행하고 있습니다.계류중인 의도에 전달 될 때 정적 메소드의 인 텐트가 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 애플리케이션으로 실행되는 동안 구체적으로 발생하는 이유를 알고 있습니까?

+1

(다시) 앱을 설치하면 이전의 'PendingIntent'가 발생하고 알람이 소멸됩니다. – corsair992

+0

그럴 가능성이 가장 높습니다. 해결되지 않은 것 같지만,이 시점에서 내 앱이 작동한다고 말할 수 있습니다. –

답변

1

기기가 재부팅되거나 앱이 제거되면 PendingIntent과 알람이 모두 삭제됩니다. 이것은 정상적인 동작입니다.

+0

이 문제를 해결해 주셔서 감사합니다. –

관련 문제