服务中的runnable是否在UI线程上运行

And*_*Dev 4 android runnable

在Android中,当我在服务中创建runnable并运行它时,虽然我意识到它在自己的线程中运行,但这个线程是否在某种程度上是UI线程的一部分?换句话说,如果runnable执行了一个很长的过程,它会影响用户界面吗?

编辑:

private class SomeRunnable implements Runnable
{
  @Override
  public void run()
  {
    try
    {

    }
  }
}

SomeRunnable runnable = new SomeRunnable();
(new Handler()).postDelayed(runnable, 1000);
Run Code Online (Sandbox Code Playgroud)

S.D*_*.D. 11

文档:

服务在与声明它的应用程序相同的进程中运行,并在该应用程序的主线程中运行,

不同的线程:

Thread t = new Thread(new MyRunnable());
t.start();
Run Code Online (Sandbox Code Playgroud)

UI /服务线程:

Handler h = new Handler();
h.post(new MyRunnable());
Run Code Online (Sandbox Code Playgroud)

  • @AndroidDev第一段代码在一个单独的线程上启动一个`Runnable`,**与UI线程**完全无关.第二段代码在运行服务的**相同线程**上运行`Runnable`,它将影响UI线程**. (2认同)
  • @AndroidDev在处理程序的情况下,它将在执行`new Handler()`的线程上运行,就像你在服务的`onBind()`中创建处理程序一样,该处理程序现在指向服务线程. (2认同)