静态服务对象变为空

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()。这为我解决了问题。