안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요,
업데이트 취소/ 성공에 대한 팝업창을 만들려고 합니다.
PopupActivity.java에서 성공이든 취소든 팝업창을 띄우는걸 담당하고 있는데,
이 안에 cancel listener 를 하나 만들어놓고, back 키를 누를경우 자기 자신(PopupActivity)한테 broadcast를 보내고,
만약 취소 버튼이 눌려지지 않는다면 UpdateProc.java 에서 업데이트 진행 완료후 PopupActivity에 마찬가지로
broadcast를 보내도록 했습니다.
그래서,
PopupActivity 안에 receiver를 하나 만들어놓고, 거기서 아래와 같이 처리하게 했습니다.
이때 updatecancel은 PopupActivity에서 자기 자신으로 날리는 broadcast이고,
updateEnd는 UpdateProc에서 PopupActivity로 날리는 broadcast입니다.
이걸 처리하기위해 IntentFilter를 사용했는데,
PopupActivity의 onCreate method에서
위에까진 전체적인 얘기였고, 질문의 요지는....
제일 아래 onCreate method에서... receiver에서 IntentFilter를 사용하기 위해,
IntentFilter 를 두개 선언하고, registerReceiver도 각각의 IntentFilter를 적용하기 위해 두번이나 호출했는데,
이런식으로 사용하는게 맞는지 궁금합니다.
아니면 Intent를 받기 위해 다른 좋은 방법이 있는지, 또는 위의 코드처럼 두번씩 호출 안하고 한번에 처리하는 방법이 있는지
위의 방법이 잘못된것인지, 아니면 저렇게 하는게 맞는지.. 그런것들이 궁금합니다.
조언 부탁드립니다!!!
감사합니다.
업데이트 취소/ 성공에 대한 팝업창을 만들려고 합니다.
PopupActivity.java에서 성공이든 취소든 팝업창을 띄우는걸 담당하고 있는데,
이 안에 cancel listener 를 하나 만들어놓고, back 키를 누를경우 자기 자신(PopupActivity)한테 broadcast를 보내고,
만약 취소 버튼이 눌려지지 않는다면 UpdateProc.java 에서 업데이트 진행 완료후 PopupActivity에 마찬가지로
broadcast를 보내도록 했습니다.
그래서,
PopupActivity 안에 receiver를 하나 만들어놓고, 거기서 아래와 같이 처리하게 했습니다.
private class PopupReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent i) {
if(i.getBooleanExtra("updatecancel", false)) {
unregisterReceiver(r);
pDialog.dismiss();
showDialog(UPDATE_CANCEL);
} else if(i.getBooleanExtra("updateEnd", false)){
unregisterReceiver(r);
pDialog.dismiss();
showDialog(UPDATE_SUCCESS);
}
}
}
이때 updatecancel은 PopupActivity에서 자기 자신으로 날리는 broadcast이고,
updateEnd는 UpdateProc에서 PopupActivity로 날리는 broadcast입니다.
이걸 처리하기위해 IntentFilter를 사용했는데,
PopupActivity의 onCreate method에서
PopupReceiver r = new PopupReceiver(); IntentFilter filter = new IntentFilter(StockService.UPDATE_END_INTENT); IntentFilter filter2 = new IntentFilter(UPDATE_CANCEL_INTENT); registerReceiver(r, filter); registerReceiver(r, filter2);이런식으로 코드를 처리하였습니다.
위에까진 전체적인 얘기였고, 질문의 요지는....
제일 아래 onCreate method에서... receiver에서 IntentFilter를 사용하기 위해,
IntentFilter 를 두개 선언하고, registerReceiver도 각각의 IntentFilter를 적용하기 위해 두번이나 호출했는데,
이런식으로 사용하는게 맞는지 궁금합니다.
아니면 Intent를 받기 위해 다른 좋은 방법이 있는지, 또는 위의 코드처럼 두번씩 호출 안하고 한번에 처리하는 방법이 있는지
위의 방법이 잘못된것인지, 아니면 저렇게 하는게 맞는지.. 그런것들이 궁금합니다.
조언 부탁드립니다!!!
감사합니다.
2010.01.05 22:53:35
굳이 자신한테 보내는 메시지 처리를 위해서 BroadcastReceiver를 쓸 필요는 없을 듯 하구요 그냥 back key를 overriding하시는게 더 편 할 듯 하네요. 그리고 intent filter는 하나만 만드셔도 되구, intent에 여러개의 parameter를 넣어서 처리하시는게 편해보이네요 예) Intent i = new Intent("your.intentfiler.blah"); i.putStringExtra("action","updatecancel"); i.putBooleanExtra(true); sendBroadcast(i); 이런식으로 하시고 리시버에서 action을 꺼내보고 action종류별로 후처리를 수행하시면 될 듯 합니다.



