静态服务对象变为null

时间:2016-03-22 07:57:33

标签: android broadcastreceiver android-service

我在清单文件中添加了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?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

可能我使用的是错误的方法。正如评论中所建议的那样,现在我打电话给startService,意图设置了一个标志,并在我的onStartCommand上检查该标志。如果设置了标志,那么我只需拨打onNetworkChange()。这解决了我的问题。