我想在一个单独的线程上完成一个工作/任务队列,但一次只能处理一个工作。所以不要同时。
是否有内置的Android内容?
谢谢,
编辑: 工作=从数据库获取信息。完成后,使用获取的信息更新UI。
答案 0 :(得分:15)
你检查过java.util.concurrent.Executors吗?你可以这样做:
final static ExecutorService tpe = Executors.newSingleThreadExecutor();
...
tpe.submit(new Runnable() {
@Override
public void run() {
// your work
}
}):
它不是特定于Android的,它是jdk5的一部分。
来自doc:
创建一个Executor,它使用一个工作线程来操作 无界队列。 (但请注意,如果此单个线程终止 由于在关机之前执行期间出现故障,新的将会 如果需要执行后续任务,取而代之。)任务是 保证按顺序执行,并且不会超过一个任务 在任何给定时间都有效。不同于其他等同物 newFixedThreadPool(1)保证不返回执行者 可重新配置以使用其他线程。
答案 1 :(得分:3)
如果您希望某些内容可以独立于可以执行排队工作的活动生命周期,则应该查看IntentService。它可以旋转,异步地执行离散的工作块,然后在完成所有任务后完成它。
如果你不需要任何可以没有任何活动的东西,那么Java有ExecutorService以及几种不同的实现。
答案 2 :(得分:0)
在Android中你也可以考虑关于Loader框架。