[Android] BR Android 2012. 3. 12. 16:29

브로드 캐스트 즉, 방송을 뜻한다. 이는 BroadcastReceiver 클래스에 상속받아 onReceive(Context,Intent) 를 호출하여 실행된다.

이들은 메인 스레드에 의해 실행 됨으로 10초의 시간 내에 접속이 되지 않으면 정지하는 습성을 지니고 있다.

방송 시작에 대해서는 sendBroadcast(Intent,String)과 sendOrderedBroadcast(Intent, String) 두가지 방법으로 호출이 된다.

다음은 샘플 예제이다.

public class ImageViewActivity extends Activity {
 static final int NAPNOTI = 1;
    NotificationManager mNotiManager;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        Button btn = (Button)findViewById(R.id.call);
        btn.setOnClickListener(new Button.OnClickListener() {
         public void onClick(View v) {
          Intent intent = new Intent();
          intent.setAction("imageview.test.BroadCast");
          sendBroadcast(intent);
         }
        });       
    }
}

public class check extends BroadcastReceiver {
   
    public void onReceive(Context context, Intent intent) {
     Intent intent2 = new Intent(context, DownHtml.class);
     intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     context.startActivity(intent2);
    }
}

위에서 보면 setAction이 있음을 확인 할 수 있을 것이다. 이는 매니페스트 파일 내의

<receiver android:name=".check">
        <intent-filter>
            <action android:name="imageview.test.BroadCast" />
        </intent-filter>
</receiver>
이와같은 부분을 추가 해 주면 된다.

이와 다르게 BroadcastReceiver 자체를 새로 생성해서 처리 할 수 있다.

액티비티를 상속받은 클래스 내에 이를 생성하고 그 아래 onReceive를 구현 해 주면 된다.

여기에서 하나 더 보태자면 onResume과 onPause를 구현해야하는데

onResume내에 들어 갈 코드는 다음과 같다.

super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction("필터 이름");
registerReceiver(BroadcastReceiver);

onPause내에 들어 갈 코드는 다음과 같다.
super.Pause();
unregisterReceiver(BroadcastReceiver);