원래 코드를 통해 내 주요 활동에 브로드 캐스트 리시버를 등록했습니다. 그러나 IntentServices (백그라운드에서 실행되는)는 인 텐트를 브로드 캐스트하므로 항상 사용할 수있는 브로드 캐스트 수신기가 필요합니다. 내 코드에서 수신기를 등록하는 나의 방법은 뒤로 버튼을 누를 때까지 계속 작동했습니다. 그런 다음 주 활동이 파손됨에 따라 수신기가 등록 취소됩니다.이상한 브로드 캐스트 수신기 동작
이와 같이 수신기의 선언을 Manifest 파일로 옮길 생각이 들었습니다. 그러나, 나는 코드가 의도를 방송 할 때마다 브로드 캐스트 리시버의 새로운 인스턴스가 만들어지는 이상한 문제를 보게된다. 내가 원했던 것은 방송 수신기의 단일 인스턴스를 항상 사용할 수 있도록하는 것입니다. 이는 내 브로드 캐스트 리시버가 타이머를 생성하고 시작하기 때문에 발생하지만, 리시버의 인스턴스가 여러 개 만들어지면 여러 타이머가 만들어져 좋지 않습니다.
참고 : 내 브로드 캐스트 수신기의 단일 인스턴스는 인 텐트를 수신하지만 타이머가 이미 시작된 경우를 처리 할 수 있습니다.
<receiver android:name=".StartTimerBroadcastReceiver" android:enabled="true" >
<intent-filter>
<action android:name="START_TIMER" />
</intent-filter>
</receiver>
그리고 여기 의도를 방송 내 코드는 다음과 같습니다 :
Intent broadcastIntent = new Intent("START_TIMER");
broadcastIntent.putExtra("timerID", "timer1");
sendBroadcast(broadcastIntent);
내가 뭔가 잘못하고 있는가 여기
는 매니페스트 파일에 내 코드? 어떤 도움을 주셔서 감사합니다. 감사합니다
감사합니다. 이 두 가지 옵션을 살펴 보겠습니다. 가능한 한 쉽게 전체 응용 프로그램에서 단일 타이머를 사용할 수 있기를 원하기 때문에 일부 상황에서 타이머 처리기 클래스를 사용할 수 있습니다. 처음부터 인 텐트 브로드 캐스트를 사용하는 이유는 타이머 개체를 코드에 깊게 전달할 필요가 없었기 때문입니다. 그러나, 나는 다른 개체가 정적 메서드를 통해 타이머를 시작할 수 있도록 제대로 구현 된 타이머 처리기가 괜찮을 것이라고 생각합니다 :) – jtnire