2017-05-11 3 views
3

인터넷 전화 앱에서 작업 중입니다. 내 앱에서 일부 특정 키가있는 FCM 데이터 메시지를 앱이 수신 할 때 BroadcastReceiver을 사용하여 전화 화면을 호출합니다. 일반적으로 잘 작동하지만 최근 앱 목록에서 내 앱을 스 와이프하면 작동하지 않습니다. 내 BroadcastReceiver은 앱을 스 와이프 한 후에 작동을 멈추는 것처럼 보입니다. 모든 FCM 서비스가 정지 상태이며 FCM 메시지도 수신하고 logcat에도 표시되기 때문입니다.recents 목록에서 앱을 스 와이프 한 후 BroadcastReceiver가 작동하지 않습니다.

브로드 캐스트 리시버를 java 코드 (이 아닌 매니페스트)에 등록합니다.

서비스 클래스를 사용하여 브로드 캐스트 리시버를 등록했으며 onTaskRemoved()을 오버라이드하고 AlarmManager을 사용하여 서비스를 계속 실행하지만 작동하지 않게했습니다.

BroadcastReceiver이 해고되지 않고 문제를 해결할 수 있습니까?

+0

수신자를 onDestroy() 메소드에서 등록 해제 하시겠습니까? – AlexTa

+2

브로드 캐스트 리시버를 자바 코드로 등록해야하는 특별한 이유가 있습니까? 매니페스트에 등록하면 모든 요구 사항에 따라 작동하기 때문입니다. – MKY

답변

1

브로드 캐스트 리시버를 자바 코드 (매니페스트가 아님)에 등록합니다.

그게 문제의 원인입니다. 사용자가 최근 목록에서 앱을 스 와이프하면 앱 프로세스가 파괴됩니다. 따라서 BroadcastReceiver도 파괴되고 있습니다.

AndroidManifestBroadcastReceiver을 등록하면 앱에 실행 프로세스가 있거나 아니어도 관계없이 onReceive()이 호출됩니다.

+0

나는 이것을 시도했다, 그것은 레노버 p70에서만 작동한다, 나는 또한 moto g3에서 테스트했다. 그러나 그것의 작동하지 않는 또는 다른 어떤 장치 –

+0

이것은 일했다, 고마워. 그건 내 실수였다. 방송 수신 장치가 잘 작동했습니다. –

관련 문제