2014-11-22 78 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未連接