静态服务对象变为空
static service object becomes null
我在我的清单文件中添加了一个 BroadcastReceiver
来检测网络变化。这是扩展 BroadcastReceiver
的 class。
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?感谢任何帮助。
可能是我用错了方法。正如评论中所建议的那样,现在我调用 startService
的目的是设置一个标志,并且在我的 onStartCommand
上检查该标志。如果设置了标志,那么我只需调用 onNetworkChange()
。这为我解决了问题。
我在我的清单文件中添加了一个 BroadcastReceiver
来检测网络变化。这是扩展 BroadcastReceiver
的 class。
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?感谢任何帮助。
可能是我用错了方法。正如评论中所建议的那样,现在我调用 startService
的目的是设置一个标志,并且在我的 onStartCommand
上检查该标志。如果设置了标志,那么我只需调用 onNetworkChange()
。这为我解决了问题。