Life Life Life

BroadcastReceiver 편하게 관리하기 본문

개발/안드로이드

BroadcastReceiver 편하게 관리하기

네버그린 2014. 4. 10. 14:20

안드로이드 Reeceiver 등록 및 해체할때마다 신경쓰인다. 


등록되어져 있는 상태에서 해체하면 상관없는데 미등록상태에서 해체하면 오류가 


발생하며 따로 등록되어져 있는지 확인하는 API가 존재하지 않아 tyr ~ catch로 


처리하였는데 관리 Manager을 만들어 처리하였어요.


private ReceiverManager(Context context)

{

this.context = context;

}


public static synchronized ReceiverManager init(Context context)

{

if (ref == null)

ref = new ReceiverManager(context);

return ref;

}


public void registerReceiver(BroadcastReceiver receiver, IntentFilter intentFilter)

{

if(receivers.contains(receiver))

{

return;

}

receivers.add(receiver);

context.registerReceiver(receiver, intentFilter);

}


private boolean isReceiverRegistered(BroadcastReceiver receiver)

{

boolean registered = receivers.contains(receiver);

return registered;

}


public void unregisterReceiver(BroadcastReceiver receiver)

{

if (isReceiverRegistered(receiver))

{

receivers.remove(receiver);

context.unregisterReceiver(receiver);

}

}