Android 如何确保已调用onDataChanged?那该怎么办呢?
假设我的手机上有一个活动,它的任务是将一个整数(用户输入的)发送到Wear中的服务 在我的电话活动中,我做了一个–Android 如何确保已调用onDataChanged?那该怎么办呢?,android,wear-os,Android,Wear Os,假设我的手机上有一个活动,它的任务是将一个整数(用户输入的)发送到Wear中的服务 在我的电话活动中,我做了一个– Wearable.DataApi.putDataItem(mGoogleApiClient, request); 这就是我的活动。在我的穿戴服务中,我实现了这一点 public void onDataChanged(DataEventBuffer dataEvents) {} 在我的onDataChanged中,我将收到的值保存在SharedReference中,以便在打开活动
Wearable.DataApi.putDataItem(mGoogleApiClient, request);
这就是我的活动。在我的穿戴服务中,我实现了这一点
public void onDataChanged(DataEventBuffer dataEvents) {}
在我的onDataChanged中,我将收到的值保存在SharedReference中,以便在打开活动时在活动中使用该值
我的问题是,当我的用户打开wear活动时,我如何确保我收到了我的价值?谷歌表示,当数据发生变化时,将调用onDataChanged,但我尝试了几次更改整数,但运气不佳,服务没有收到任何信息
如果我没有收到任何信息,我可以从我的活动中做些什么来重新调用/启动接收数据项的过程吗?在onDataChanged()之后,我强制
mGoogleApiClient.disconnect();
mGoogleApiClient.connect();
只有通过这些设置,onDataChanged()才适合我 原因是——据我所知——当onDataChanged第一次被调用时,其他时候它需要更改才能再次被调用。它甚至可以是删除和创建一个新文件/流/请求并将其放到数据层,或者断开和连接GoogleAppClient。这样客户机每次都会将数据理解为新的和更改的数据
我使用的应用程序在某些时候会从手表向手机发送数据,每次我都会删除并创建一个新文件 根据Android文档,提供的缓冲区DataEventBuffer将在onDataChanged方法完成后关闭。可以使用DataEventBuffer上的getStatus()调用检查DataEventBuffer的状态。您可以演示如何添加此Listner服务吗?因为,根据Android文档,活动和其他短期的Android组件可能会使用addListener(GoogleAppClient,DataApi.DataListener)、addListener(GoogleAppClient,MessageApi.MessageListener)和addListener(GoogleAppClient,NodeApi.NodeListener)在有限的时间内接收事件。在我的第一行代码中,我可以添加一个.await()然后检查是否已完成并发送到手表。确实如此。我的问题不是它不起作用。它在工作,但非常不可靠。当我写这篇文章时,我想可能是因为我的服务(实现onDataChanged)没有运行?或者我需要在我的活动中执行可穿戴的.DataApi.getDataItems()?您可以让您的服务覆盖onPeerConnected和onPeerDisconnected,以查看它是否按预期使用。如果是,那么问题可能出在发送端。在使用putDataItem之前,您是否告诉GAPI客户端进行连接?如果不是,那就是您的问题——putDataItem将不会自动为您连接。如果这些都不能解决问题,请发布更多的代码。当我开始使用
DataApi
时,我错误地认为任何数据更改都会导致onDataChanged
。请注意,如果您将DataItem
更新为其已有的值,则不会调用onDataChanged
。也许这个评论对你有帮助。我正在发送一个22kb的字符串。每次都会有1个字节发生变化。为了更好地理解观众,您想详细说明为什么这对您有效吗?