多个工作线程的优先级与IntentService相同?

时间:2010-08-24 06:45:54

标签: android design-patterns concurrency service backgroundworker

所以从我所知道的,如果我在AsyncTask内部Activity,当用户在完成之前退出Activity时,该任务可能会被终止。我见过的一个解决方案是使用IntentService,系统会努力不杀人。

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

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

如果我开始(正常)Service,那么在那里启动一些AsyncTask,这会导致更高的优先级吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

我确定它不是你想让我告诉你的,但你可能需要重新考虑你的设计,而不是在后台运行这么多东西。这当然全部取决于你想要完成的目标,所以请详细说明你是否会在后台做些什么。

对于你问题的后半部分。启动服务并从那里启动AsyncTask将不会产生任何更高的优先级。这是因为必须在UI线程上启动AsyncTask(如果从活动或服务级别启动,则相同)

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