2016-06-08 77 views
0

这是我第一次来这里。我希望我的问题清楚。Android - 按请求顺序在后台运行任务

我想有一个Decoder对象在活动开始时初始化并保持空闲状态,直到它请求执行Decoder.decode(int x),我想在后台运行并按请求顺序运行。

例如,Decoder.decode(int x)需要超过1秒才能完成,但我打电话要求它每秒运行一次。我想呼叫Decoder.decode(int x)在开始执行之前等待先前的呼叫完成。

目前,我正在使用Service并将其与我的活动绑定。初始化部分在onBind()中完成。每次发出请求时,该服务都将创建一个AsyncTask,并在其doInBackground方法中运行Decoder.decode(int x)。这是正确的方法还是我应该做别的?

谢谢你的帮助。

+0

你应该总是使用的AsyncTask的耗时的操作 –

+0

@RajPatel是的,我使用的AsyncTask,但现在我都不了解如何使一个请求在开始运行之前等待它完成。 – Nguyen

+0

参见'HandlerThread'类,阅读[this](https://medium.com/@ali.muzaffar/handlerthreads-and-why-you-should-be-using-them-in-yould-be-using-the-the-your-android-apps-dc8bf1540341 #.78reeomk6),section'如何使用HandlerThreads'或[this](https://www.safaribooksonline.com/library/view/efficient-android-threading/9781449364120/ch08.html) – pskink

回答