【问题标题】:More than one worker threads with same priority as IntentService?多个与 IntentService 具有相同优先级的工作线程?
【发布时间】:2010-08-24 06:45:53
【问题描述】:

据我所知,如果我在Activity 中执行AsyncTask,则当用户在完成之前退出Activity 时,任务可能会被终止。我见过的一种解决方案是使用IntentService,系统会尽量不杀死它。

我的问题是IntentService 只使用一个后台线程来一一运行所有任务。我有几个希望同时运行的独立任务,这会对 UI 产生影响(不严重,但可能会让用户感到惊讶)。

我该如何做到这一点?我想我可以有几个IntentService,但这似乎很尴尬且不可扩展。如何维护具有良好优先级的线程池,使其不会被系统轻易杀死?

如果我启动一个(正常的)Service,然后在其中启动一些AsyncTasks,这会导致更高的优先级吗?

非常感谢。

【问题讨论】:

    标签: android design-patterns concurrency service backgroundworker


    【解决方案1】:

    我确定这不是您希望我告诉您的,但是您可能需要重新考虑您的设计,以免在后台运行这么多东西。当然,这一切都取决于您到底想要完成什么,所以请详细说明您是否会在后台执行什么操作。

    关于你问题的后半部分。启动服务并从那里启动AsyncTasks 不会导致任何更高的优先级。这是因为 AsyncTask 必须在 UI 线程上启动(如果从 Activity 或 Service 级别启动也一样)

    如果您正在运行多个网络线程,请停止这种非常糟糕的做法并浪费大量电池电量。你最好一次运行一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多