Я хочу создать сервис Android, который уведомляет основной вид деятельности каждый раз, когда разъединения и когда Интернет снова соединяется снова. У меня есть следующая функция для проверки Интернета connectivity:.
private boolean haveInternet(){
NetworkInfo info=(NetworkInfo)((ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if(info==null || !info.isConnected()){
return false;
}
if(info.isRoaming()){
//here is the roaming option you can change it if you want to disable internet while roaming, just return false
return true;
}
return true;
}
Но я хочу знать, как использовать его в сервисе.
Сервисы предназначены для длительной работы в фоновом режиме.
Вам следует использовать BroadcastReceiver
:
Это пример метода, который я использую для отслеживания состояния сети в моем основном Activity:
private void installListener() {
if (broadcastReceiver == null) {
broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
NetworkInfo info = (NetworkInfo) extras
.getParcelable("networkInfo");
State state = info.getState();
Log.d("InternalBroadcastReceiver", info.toString() + " "
+ state.toString());
if (state == State.CONNECTED) {
onNetworkUp();
} else {
onNetworkDown();
}
}
};
final IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(broadcastReceiver, intentFilter);
}
}
Не забудьте вызвать unregisterReceiver при возникновении события onDestroy
Надеюсь на эту помощь .