티스토리 뷰

아래는 코모스튜디오가 직접 만든 무료 앱이에요

(한 번만 봐주세요 ^^)

01

02

03

정각알림 만들기(말하는시계)

말하는 시계 (취침, 자전거) 

말하는 타이머 음성 스톱워치 

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())) {

그래서 위와 같은 방식으로 변경하여 사용하도록 하자.


모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다.
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요.
댓글
공지사항
최근에 올라온 글