android – 在尝试填充集合之前,Widget服务不会等待数据

android – 在尝试填充集合之前,Widget服务不会等待数据,第1张

概述好吧,我似乎再次陷入困境.我让我的小部件工作一半,我想我知道为什么它失败但我不知道如何解决它. 在我的widget服务类中,在onDataSetChanged()方法中,我调用来获取我的数据(异步).但是系统在加载数据之前调用getCount(),因此返回0表示大小,并且从不调用getViewAt(). 如果我在onDataSetChanged()中创建一些假数据而不是调用从Firebase获取真 好吧,我似乎再次陷入困境.我让我的小部件工作一半,我想我知道为什么它失败但我不知道如何解决它.

在我的Widget服务类中,在onDataSetChanged()方法中,我调用来获取我的数据(异步).但是系统在加载数据之前调用getCount(),因此返回0表示大小,并且从不调用getVIEwAt().

如果我在onDataSetChanged()中创建一些假数据而不是调用从Firebase获取真实数据,那么它将显示正常.所以我知道它与众不同.

我已经尝试过各种各样的东西让它起作用但没有运气.我不想把它变成一个很长的问题,所以我会尽量保持简单.我的问题是系统如何知道数据何时准备就绪?似乎没有一种方法我可以调用它来通知它数据现在存在.

我可能完全错了,但我认为这就是问题所在. onDataSetChanged()方法不等待,我无法告诉它.

让我更加困惑的是,在我使用假静态数据的应用程序的mockDeBUG版本中,即使使用异步调用,它也能正常工作.我的结论是它必须加载得如此之快,以至于在调用getCount()时就已经准备好了.但更令人困惑的是,在短时间内它也在prodDeBUG版本中工作,然后没有,也从未有过.据我所知,那段时间我没有改变任何东西.无论如何,这是我能够提出的唯一解释.原因是因为我从调试器或日志中看到getCount()在我从Firebase获取数据时加载数据之前被调用,导致它失败,但如果我使用静态数据则在加载数据后调用它,让它成功.

我如何让它等待?或者还有其他我可能做错了什么?

谢谢.

解决方法 好的,解决方案编号2:使用CountDownLatch将异步调用转换为同步调用.

有了这个,我可以从onDataSetChanged()内部获取所有数据,因为我最初尝试使用几行额外的代码.

到目前为止,我已经能够填充小部件列表并向其添加数据.

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/CountDownLatch.html

Sync version of async method

总结

以上是内存溢出为你收集整理的android – 在尝试填充集合之前,Widget服务不会等待数据全部内容,希望文章能够帮你解决android – 在尝试填充集合之前,Widget服务不会等待数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1126023.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存