如何在Android中设置IntentService的优先级

我想知道是否有可能像使用Thread一样设置IntentService的优先级。 到目前为止我还没有find任何东西。

  • Android可以有多less个线程?
  • 我可以将不同types的parameter passing给Android中的AsyncTask吗?
  • 闩锁(用于等待asynchronous响应)冻结WebView(和UI)
  • 从另一个AsyncTask调用一个AsyncTask
  • Android:新线程Runnable在主线程中执行
  • java.lang.RuntimeException:无法在未调用Looper.prepare()的线程中创build处理程序;
  • 从服务Android调用Toast时出错
  • Android:RunOnUiThread vs AsyncTask
  • IntentService使用的HandlerThread不会暴露给SDK。 它被设置为Process.THREAD_PRIORITY_DEFAULT作为优先级。

    请注意, IntentService是143行代码,包括空格和注释,所以你可以考虑把它克隆成具有优先级的代码。

    您可以在您的意向服务的onHandleIntent()方法中设置Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND)

    CommonsWare的解决scheme也适用。 不过这个比较简单。

    只是为了说清楚 – 默认情况下, IntentService优先级是default- Process.THREAD_PRIORITY_DEFAULT因为它在内部使用HandlerThread 。 您可以在OnHandleIntent()中使用Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND) ,或者CommonsWare在答案中提出的任何内容。

    有些人提出这个错误 。 也有补丁可用于此。

    我改变了IntentService的优先级:“android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);” 在IntentService类的构造函数中。

    在我的情况下,它是从“零”(0)“Process.THREAD_PRIORITY_DEFAULT”更改为“Process.THREAD_PRIORITY_BACKGROUND”十(10),结果是可见的。