활동의 onCreate 이벤트에서 사용자 지정 브로드 캐스트 수신기를 만들어야하고 분명히 활동의 onDestroy 이벤트에서 브로드 캐스트 수신기 등록을 취소해야합니다.
명확성을 위해 이것은 내가 사용하는 코드의 일부입니다.
public class AnActivity extends Activity {
private ResponseReceiver receiver;
public class ResponseReceiver extends BroadcastReceiver {
public static final String ACTION_RESP =
"mypackagename.intent.action.MESSAGE_PROCESSED";
@Override
public void onReceive(Context context, Intent intent) {
// TODO Start a dialogue if message indicates successfully posted to server
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
IntentFilter filter = new IntentFilter(ResponseReceiver.ACTION_RESP);
filter.addCategory(Intent.CATEGORY_DEFAULT);
receiver = new ResponseReceiver();
registerReceiver(receiver, filter);
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
활동에 대한 onPause / onResume 및 onStart / onStop 이벤트도 브로드 캐스트 수신기를 등록 및 등록 취소해야한다는 것을 읽었습니다.
나는 이것에 대한 모범 사례로 간주되는 것과 그 이유를 정말로 이해하고 싶습니다.
onDestroy()
는 호출 될 때 더 이상 이벤트가 수신자에 의해 수신되지 않기 때문 입니다.