2014-11-22 77 views
0

我想从WearableListenerService访问GoogleApiClient,并获得NullPointerException从可穿戴侦听器服务访问GoogleApiClient实例失败

可穿戴侦听器服务在后台运行并侦听磨损消息。在穿戴消息接收时,服务将例如调用web服务并且使用GoogleApiClient以异步方式发送响应给服装。

我在活动中尝试了相同的代码而没有错误。但我不想将这个后台服务放在一个活动中。

那么做这个简单的沟通模式最好的方法是什么?

这里是我的代码:

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) { //...} 
} 

回答

1

尝试将其移动到服务的onCreate。此示例正常工作与我的服务

@Override 
public void onCreate() { 

    super.onCreate(); 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(Wearable.API) 
      .build(); 
    mGoogleApiClient.connect(); 

} 
+0

谢谢,这就是我已经做的。现在它工作正常。 – nono 2014-11-25 07:21:05

0

我与去年anwser同意,或另一种方式是:

你可以在OnDataChangedMethod连接一个谷歌的API客户端,使用googleapiclient.blockConnect

0

我这样做

@Override 
public void onCreate() { 

    super.onCreate(); 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(Wearable.API) 
      .build(); 
    mGoogleApiClient.connect(); 

} 

但是当得到onStartCommand mGoogleApiClient未连接