我在清单文件中添加了BroadcastReceiver
以检测网络更改。这是扩展BroadcastReceiver
的类。
public class NetworkConnectivityReceiver extends BroadcastReceiver {
static FirstService firstService;
public static void initServiceObj (FirstService serviceObj) {
if (serviceObj == null) {
CommonUtils.printLog("service obj is null.. returing");
return;
}
CommonUtils.printLog("setter called for serviceObj");
firstService = serviceObj;
}
public void onReceive(Context context, Intent intent) {
if (firstService == null) {
CommonUtils.printLog("service obj is null in onreceive.. returing");
return;
}
firstService.onNetworkChange();
}
}
我正在启动一个名为FirstService的服务,在该服务的onCreate
中,我调用静态方法initServiceObj
来初始化FirstService
obj。我从日志中看到对象已设置。但是当网络发生变化时,onReceive
我发现服务对象为空。为什么静态变量在onReceive中变为null?任何帮助表示赞赏。
答案 0 :(得分:0)
可能我使用的是错误的方法。正如评论中所建议的那样,现在我打电话给startService
,意图设置了一个标志,并在我的onStartCommand
上检查该标志。如果设置了标志,那么我只需拨打onNetworkChange()
。这解决了我的问题。