【问题标题】:Android : Run A task in a separate thread outside application scopeAndroid:在应用程序范围之外的单独线程中运行任务
【发布时间】:2015-05-02 11:30:05
【问题描述】:

我正在尝试使用最大线程大小为 5 的线程池执行器在 android 的单独线程中执行特定任务,以确保一次可以运行五个并行任务。但是这种方法的问题是当我关闭我的应用程序时,线程也会被杀死。我希望这超出应用程序范围。 我本可以选择使用 AIDL 的服务。但是这个问题是我需要继续绑定和取消绑定到服务,并且我需要在需要发送之前打包对象。此外,当任务完成时,我需要与调用应用程序进行通信。这我可以使用广播来实现。我想知道是否可以让线程在单独的进程中运行,或者我只需要使用 AIDL 吗?请帮我理解!

【问题讨论】:

    标签: android threadpool remote-process


    【解决方案1】:

    根据定义,线程是应用程序的一部分。那么,就不可能在应用之外有线程了。

    当您的应用从不创建或使用新线程时,您正在运行一个主线程,该线程使用操作系统分配给该应用的全部 CPU 时间。

    因此,您的选择是:

    1) 让您的应用在后台运行并连接到它。

    2) 使用服务方式。

    希望这能帮助你理解。

    【讨论】:

    • 感谢 BTC 资源。我很清楚,我想如果我可以让一个线程在一个单独的进程中运行而不是从一个被调用的进程中运行就可以完成这项工作。但我对此一无所知。感谢您消除我的疑问!
    • 只是提供一些关于它的参考:developer.android.com/guide/components/…。在这里,您可以了解应用程序是如何基于活动的。我可以放服务文档,但你似乎已经很清楚了 ;)
    【解决方案2】:

    服务听起来像您想要的(因为即使应用程序消失,它也可以继续运行)。 AIDL 的东西更让人痛苦,但这就是你需要做的事情来获得你所要求的行为。

    【讨论】:

      猜你喜欢
      • 2013-07-17
      • 1970-01-01
      • 2016-10-08
      • 2021-06-17
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      相关资源
      最近更新 更多