나는 정기 알람과 IntentService를 사용하여 웹 사이트의 데이터를 주기적으로 검색하는 앱을 구축하고 있습니다. 업데이트를 실행하기 전에 ConnectivityManager로 네트워크 연결을 확인합니다.네트워크 통신을 재 시도하는 올바른 방법
ConnectivityManager에서 활성 네트워크가 없다고보고하면 네트워크가 활성화 될 때 다시 업데이트를 시도하고 싶습니다. ConnectivityManager.CONNECTIVITY_ACTION을 수신하는 BroadcastReceiver를 사용하는 것이 가장 좋은 방법 인 것처럼 보이지만이 수신기를 등록/등록 취소하는 적절한 방법은 무엇입니까?
IntentService에서 네트워크 검사가 실패하면 BroadcastReceiver를 ApplicationContext에 등록하여 서비스가 중지 될 때 등록이 해제되지 않는다고 생각합니다. 그런 다음 수신자가 수신시 자체 수신 방법에서 등록을 취소 할 수 있습니까? 나는 기지에서 벗어나나요?
일부 사이비 코드 예제 :
MyIntentService :
if (!isNetworkConnected())
getApplicationContext().registerReceiver(new MyBroadcastReceiver(), new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
MyBroadcastReceiver :
public void onReceive(Context context, Intent intent) {
context.getApplicationContext().unregisterReceiver(this);
이것을 테스트하고 작동하는 것처럼 보입니다. – Ralgha