아래는 코모스튜디오가 직접 만든 무료 앱이에요(한 번만 봐주세요 ^^)
1. 브로드캐스트리시버(BroadcastReceiver)를 사용해서 액티비티등에 다시 브로드캐스트를 보낼 수있다. 하지만, 만약 2개 이상의 브로드캐스트리시버를 등록할 경우엔 고려해야 할 점이 있다.
public void registerR(){
IntentFilter filter = new IntentFilter();
filter.addAction(DO_1);
registerReceiver(mIntentReceiver, filter);
IntentFilter filterBoot = new IntentFilter();
filterBoot.addAction(DO_2);
registerReceiver(mIntentReceiver, filterBoot);
}
위와같이 필터를 각각 만들어 주어야 하며, 리시버는 하나만 만들어서 관리하면 된다.
2. 그리고, 단말기 재 부팅후 시작해야할 서비스나 동작이 있다면,
<receiver android:name="com.comostudio.a.custom.Receiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
이렇게 manifest에 추가를 해주면 되는데, 문제는 맨 위 처럼 액티비티에서 동적으로 리시버를 등록했을 경우다. 브로드캐스트 리시버에서 위 BOOT_COMPLETED를 받았다고 하더라도 액티비티로 다시 브로드캐스트(sendbroadcast) 할 수 없다는 것이다.
이유는 부팅후, 액티비티가 반드시 한 번은 다시 실행되어야 다시 리시버가 등록되기 때문이다. 즉, 액티비티를 다시 띄우고 필요한 동작을 위해 센드 브로드캐스트를 하든지, 해당 동작을 서비스로 만드는등의 다른 조치가 필요하다.
3. 브로드캐스트 리시버에서 받은 브로드캐스트 액션을 검사
if(intent.getAction().equals(SActivity.DO_1))
이와 같이 검사를 하면 action에 null 이 올 경우 단말기가 죽을 수 있다.
if(SActivity.DO_1.equals(intent.getAction())) {
그래서 위와 같은 방식으로 변경하여 사용하도록 하자.
' [안드로이드 공부] > 알림' 카테고리의 다른 글
[FLAG_UPDATE_CURRENT의 비밀]Permission Denial: broadcasting Intent is not exported from uid (0) | 2016.01.26 |
---|---|
브로드캐스트 리시버에서 하지 말아야 할 것들 (0) | 2015.09.23 |
안드로이드 노티피케이션 여러줄 생성 (0) | 2015.09.06 |
안드로이드 노티피케이션 지우지 않기(고정), Led 출력하기 (0) | 2015.09.06 |
글로벌 알람매니저 등록과 취소 하는 법 (0) | 2015.09.04 |
모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다. |
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요. |