Android 可穿戴设备在 AsyncTask 中传递 DataMap

Android Wearable Passing DataMap in AsyncTask

我正在开发一个应用程序,其中需要在可穿戴设备 运行ning Android Wear 和 phone 之间不断进行通信。两人沟通的事件基本进展如下:

  1. Phone 向可穿戴设备发送 DataMap 中的一条数据并等待 DataLayerListener 事件。
  2. Wearable等待接收数据并在计算后在DataMap中响应一条数据,然后等待另一个DataLayerListener事件。
  3. Phone 从可穿戴设备接收数据,经过一些计算后重复 1-3。

我的问题是最好使用 AsyncTask 执行此操作,以便 UI 线程不会挂起等待响应吗?如果这是最好的解决方案,我应该在每次 运行 任务时创建一个新的 GoogleApiClient 还是在 onPreExecute() 中执行一次或尝试从 MainActivity 获取客户端?

正如 Paresh 所说,在我看来服务要好得多,因为它可以 运行 直到你想要,并且没有必要在每次创建 AsyncTask 时都创建一个新的 GoogleApiClient,只是需要一个。

关于第二个问题,我在我的应用程序中做的是:创建服务并在 onStartCommand(Intent intent, int flags, int startId) 时创建 GoogleApiClient。客户端连接时,添加相应的监听器。

最后一部分的示例:

@Override //ConnectionCallbacks
public void onConnected(Bundle connectionHint) {
    Log.d(TAG, "Google API Client connected");

    Wearable.DataApi.addListener(mGoogleApiClient, this);
    Wearable.MessageApi.addListener(mGoogleApiClient, this);

    startDataExchange();
}