WearableListenerService,onDataChanged()未被调用

Tax*_*Noi 16 android wear-os

我按照教程从手机调用可穿戴活动,发布在这里如何从掌上电脑发送通知到穿戴打开活动穿戴设备.但是,我从答案中获取源代码.但是,我无法让它运行.看起来好像onDataChanged()从未被调用过.我问这个问题本身就是一个问题,因为看起来这个例子适用于其他人.我在使用KitKat 4.4.2,如果这很重要的话.

任何提示在哪里检查,谢谢.

Tom*_*Tom 47

您可以检查两件事:

  • packageName磨损应用程序应该与packageName设备应用程序相同
  • onDataChanged()只有在数据确实发生变化时才会调用.如果多次将相同的数据放入DataApi,则只能调用一次,直到您编写不同的数据.您可以向数据添加时间戳,以确保每次写入操作都调用一次该方法.但是,就电池使用而言,使用DataApi可能比发送消息更昂贵.因此,如果您只想在将数据放入DataApi后触发操作,只需在完成后发送消息即可.

  • 我在测试期间添加了`dataMap.getDataMap().putLong("Time",System.currentTimeMillis());`以保证更改. (6认同)
  • 一遍又一遍地向onDataChanged()发送相同的数据就是为我做的.谢谢! (3认同)
  • 你救了我的一天!谢谢! (3认同)

Mar*_*arc 16

使用Play服务版本8.3.0,邮件可能会延迟30分钟.使用新的setUrgent()方法,它会毫不拖延地发送.

最后,如果您正在开发可穿戴设备,您将了解电池寿命和电源使用优化对于获得出色的用户体验至关重要.借助Google Play服务8.3,我们更新了DataApi,以便在数据项同步方面保持紧迫性.现在,可以将优先级添加到数据项以确定何时应该同步它.例如,如果您正在构建一个需要立即同步的应用程序,例如远程控制应用程序,它仍然可以通过调用setUrgent()立即完成,但是对于诸如更新联系人之类的内容,您可以容忍一些延迟.非紧急DataItem可能会延迟最多30分钟,但您可以预期,在大多数情况下,它们将在几分钟内交付.低优先级现在是默认值,因此需要setUrgent()来获取先前的时间.

http://android-developers.blogspot.nl/2015/11/whats-new-in-google-play-services-83.html


ric*_*ard 5

确保build.gradle文件中的applicationId对于掌上电脑和可穿戴模块是相同的

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "your.applicationid" // needs to be the same in both modules
        minSdkVersion 20
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        targetCompatibility = '1.7'
}

...
Run Code Online (Sandbox Code Playgroud)