gpt4 book ai didi

android - 创建一个低优先级的 Android 服务

转载 作者:太空宇宙 更新时间:2023-11-03 12:35:07 25 4
gpt4 key购买 nike

令人惊讶的是,互联网上从来没有人需要创建低优先级的 Android 服务,但我需要。该服务可能偶尔需要做一些密集的 CPU 或数据库工作,所以我希望它具有尽可能低的优先级。如果它有什么不同,我需要该服务一次性从数据库中读取条目(可能是几千条),然后遍历列表并添加和减去一些值。尽可能降低 CPU 负载非常重要,我不在乎它是在 1 秒还是 10 秒内完成。

Android 开发文档提供了一个这样的例子:

  @Override
public void onCreate() {
// Start up the thread running the service. Note that we create a
// separate thread because the service normally runs in the process's
// main thread, which we don't want to block. We also make it
// background priority so CPU-intensive work will not disrupt our UI.
HandlerThread thread = new HandlerThread("ServiceStartArguments",
Process.THREAD_PRIORITY_BACKGROUND);
thread.start();

// Get the HandlerThread's Looper and use it for our Handler
mServiceLooper = thread.getLooper();
mServiceHandler = new ServiceHandler(mServiceLooper);
}

完整示例 ( http://developer.android.com/guide/components/services.html ) 涉及一个服务处理程序和一个循环程序,本示例中未对它们进行解释。这些是否是降低服务优先级所必需的,或者这只是开发文档使事情复杂化,还有另一种方法可以确保服务是低优先级?

最佳答案

对于您的用例而言,重要的是在您使用 Process.THREAD_PRIORITY_BACKGROUND 创建的线程中处理信息。您还可以在调用了 Thread.setPriority 的另一个线程中处理事情。 (参见 the docs on Thread)

向另一个线程发送命令的 android 惯例是使用 Handler和一个 Looper ,但您不需要使用这些来确保低优先级。 Handler 为您提供了一种将消息发送到线程的约定,一次处理一条消息。它还提供了在一些延迟后运行或在一段时间后运行的过帐项目的约定。处理程序与负责将消息分派(dispatch)给处理程序的 Looper 相关联。

关于android - 创建一个低优先级的 Android 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22139456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com