0

我有一个奇怪的问题,希望你们中的某个人知道这里发生了什么。

我的应用程序结构如下:

  • 我有一个主要服务,它注册一个广播接收器并监听屏幕开/关等意图。所以这个服务无限期地运行。
  • 当收到这样的意图时,我会启动另一个执行该操作的服务
  • 在此操作服务中,我启动了一个 AsyncTask 以通过反射获取与电池相关的统计信息。服务完成后,它调用 stopSelf()。

所以一切都按预期工作,除了一次获取电池相关信息时,AsyncTask/Reflection 方法的每次后续调用都会提供与之前提供的完全相同的结果。

与此同时,电池统计数据当然已经更新,但我没有得到新的更新数字,但总是来自第一个方法调用的统计数据。

直到我进入设置并强制停止并重新启动我的应用程序,然后我再次获得更新的电池统计信息,至少一次,因为在那之后我再次陷入这些数字。

所以我的问题是:反射调用的结果是否会自动缓存在某个地方,并且每个后续调用并没有真正获取新数据,而只是提供一些缓存的结果?还有什么问题?

我很感谢任何想法,我需要一些代码让我知道:)

4

1 回答 1

0

好的,我找到了解决方法:))

Better Battery Stats 库将单例模式用于所需的类。它还包括一个 invalidate() 函数,它将单例实例设置为 null,以便在下一次 getInstance() 时重新初始化。

我现在在每次获取统计信息后都使用无效,现在我在每次调用时都获得了更新的统计信息。虽然我仍然不确定为什么单例模式似乎是这个问题的根源,但它也应该与一个初始化的单例实例一起工作......

好吧,一个人不必简单地了解一切;-)

于 2013-07-15T11:05:16.560 回答