【问题标题】:Android - Battery usage - Service or ContentProviderAndroid - 电池使用情况 - 服务或内容提供者
【发布时间】:2014-04-09 23:06:55
【问题描述】:

我有 app A,它每隔 3 秒就要求 app B 获取一些数据并保存。保存此数据后,A 并不真的需要再次询问 B 服务,但它这样做只是为了以防用户删除 B 的数据(在这种情况下,数据将在下一次调用时重新创建)。

我真的不知道每 3 秒调用一次服务的电池成本是多少(它会唤醒整个应用程序吗?)。我在想 A 可能会从 B 读取一个属性(通过 ContentProvider?);但是,最后 A 会每 3 秒询问一次 ContentProvider 是否应该调用该服务。

ContentProvider 最好的地方在于它可以返回一个结果(Service 可以这样做吗?),如果它是一个“ok 消息”,那么 A 不会询问 B 在接下来的一天左右再次。

所以,

问题是 Service 已经开发,而 ContentProvider 还没有。

是否值得创建 ContentProviedr 或调用服务并不会真正消耗任何电池?考虑到对服务的后续调用将忽略处理,因为数据已经创建。

【问题讨论】:

    标签: android android-service android-contentprovider battery battery-saver


    【解决方案1】:

    保存此数据后,A 并不真正需要再次询问 B 服务,但它这样做只是为了以防用户删除 B 的数据(在这种情况下,数据将在下一次调用时重新创建)。

    然后监视ACTION_PACKAGE_DATA_CLEARED broadcasts 以了解用户何时擦除 B 的数据。您可以通过清单注册的接收器执行此操作,因此无需运行 App A 和 App B 即可发现用户清除了 B 的数据。

    我真的不知道每 3 秒调用一次服务的电池成本是多少

    让两个应用程序持续运行,每三秒使用一次 IPC 和磁盘 I/O,这种事情可能会让你陷入困境。

    【讨论】:

    • 很好,那我还需要使用 ACTION_PACKAGE_REMOVED。但是我认为我仍然需要从服务中进行一些广播以通知数据保存成功。
    猜你喜欢
    • 2023-03-30
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多