我想从WearableListenerService访问GoogleApiClient,我得到了NullPointerException
。
可穿戴式侦听器服务在后台运行并侦听磨损消息。在穿着消息接收时,该服务将例如呼叫web服务并使用GoogleApiClient异步发送响应。
我在Activity中尝试了相同的代码而没有错误。但我不想把这个后台服务放在一个活动中。
那么做这种简单沟通模式的最佳方法是什么?
这是我的代码:
public class WearMessageListenerService extends WearableListenerService {
private GoogleApiClient client;
private String nodeId;
public WearMessageListenerService(){
client = getGoogleApiClient(this);
}
private GoogleApiClient getGoogleApiClient(Context context) {
return new GoogleApiClient.Builder(context).addApi(Wearable.API).build();
}
@Override
public void onMessageReceived(MessageEvent messageEvent) { //...}
}
答案 0 :(得分:1)
尝试将其移至service onCreate。此示例适用于我的服务
@Override
public void onCreate() {
super.onCreate();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Wearable.API)
.build();
mGoogleApiClient.connect();
}
答案 1 :(得分:0)
我同意最后的回答,或者另一种方式是:
您可以在OnDataChangedMethod
中关联google api客户端,使用googleapiclient.blockConnect
答案 2 :(得分:0)
我这样做
@Override
public void onCreate() {
super.onCreate();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Wearable.API)
.build();
mGoogleApiClient.connect();
}
但是当得到 onStartCommand 时 mGoogleApiClient未连接