【问题标题】:Android Wearable Passing DataMap in AsyncTaskAndroid Wearable 在 AsyncTask 中传递 DataMap
【发布时间】:2015-02-20 04:49:33
【问题描述】:

我正在开发一个应用程序,在该应用程序中,运行 Android Wear 的可穿戴设备和手机之间需要不断进行通信。涉及两者通信的事件的基本进展如下:

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

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

【问题讨论】:

  • 我不认为 AsyncTask 会是这里最好的解决方案。相反,您应该实现一项服务,该服务将接受数据并向可穿戴设备发送数据。

标签: android android-asynctask wear-os


【解决方案1】:

正如 Paresh 所说,在我看来 Service 要好得多,因为它可以一直运行到你想要的为止,而且每次创建 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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    相关资源
    最近更新 更多