gpt4 book ai didi

android - Activity 和 Service 是否在同一个线程中运行?

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

我对处理程序、服务和 Activity 的基本概念有些困惑。我在很多地方看到提到服务在 UI 线程中运行。关于这份声明,我有几个问题。

  • 以上说法是真是假?
  • 有人可以从服务的 android 引用中解释这个声明

    A Service is not a thread. It is not a means itself to do work off of the main thread (to avoid Application Not Responding errors).

  • 如果服务在 UI 线程中运行,则它不适合繁重的工作。对/错 ??
  • 如果没有 Activity 运行,那么哪个线程服务将运行??如果上述陈述为真。
  • 如果上面的说法是真的?那么如果我在服务和 Activity 中声明 Handler 会发生什么?因为单个线程有一个处理程序实例。
如果问题太菜鸟请见谅。

最佳答案

Is above statement true or false?

Java 中的任何地方都没有对象在线程上“运行”。 方法在线程上运行。

因此,更准确的说法是Service上的生命周期方法——onCreate(), onStartCommand(), onBind()onDestroy() -- 在主应用程序线程上调用。

Can someone explain this statement from android reference for Service

我不知道如何解释比写的更好。虽然 Service 可以管理后台线程,但Service 本身不是线程.

If service runs in UI thread then it is not suitable for heavy work

Java 中的任何地方都没有对象在线程上“运行”。 方法在线程上运行。

因此,更准确的说法是,您不应该花太多时间在上述生命周期方法直接触发的工作上。

If there is no activity running then in which thread service will be running?

Java 中的任何地方都没有对象在线程上“运行”。 方法在线程上运行。

前面提到的生命周期方法在主应用程序线程上被调用,无论前台是否有 Activity ,甚至是否存在 Activity 。

Then If I declare Handler in service as well as activity what would happen?

您将拥有一个 Handler 的实例。

Because a single Thread has one instance of Handler

Handler 的默认行为是将自己绑定(bind)到主应用程序线程,无论您是在 Activity 中创建 Handler 还是服务

关于android - Activity 和 Service 是否在同一个线程中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17068954/

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