我想创建一个Android服务,它会在断开连接并再次重新连接互联网时通知主要活动.我有以下检查互联网连接的功能:
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;
}
Run Code Online (Sandbox Code Playgroud)
但我想知道,如何在服务中使用它.
Fra*_*ita 28
服务专为长期运行任务而设计.你应该使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
记得在onDestroy事件发生时调用unregisterReceiver
希望这有帮助.
| 归档时间: |
|
| 查看次数: |
14268 次 |
| 最近记录: |