有一个像这样的循环的异步任务是一个好习惯吗?
while (true) {
check queue and request API
因为我需要等待我的活动和服务需要与 APi 通信。
谢谢
有一个像这样的循环的异步任务是一个好习惯吗?
while (true) {
check queue and request API
因为我需要等待我的活动和服务需要与 APi 通信。
谢谢
我假设“队列”是一个 Java 队列,也许是一个LinkedBlockingQueue
. 如果是这样,则该队列是不必要的,因为AsyncTask
有一个队列与其线程池一起使用。
所以,问题是:是什么触发了排队的事情?
如果触发器是用户事件(例如,菜单选择、按钮按下),只需让它启动一个AsyncTask
,或者让它Service
启动一个AsyncTask
. 该工作将由AsyncTask
系统排队。
如果触发器是时间的流逝(例如,我们想每 10 分钟检查一次外部服务器),我会使用AlarmManager
并考虑从AsyncTask
和 a切换Service
到使用IntentService
.
我有一个优先级队列,以便首先选择对 API 的重要调用。
我的程序有两个服务:
将消息添加到队列时调用 API。对 api 的调用是由 Asinc 任务以这种方式进行的:
messages.add(request);
new DownloadApiTask().execute();
另一个服务正在更新本地数据库。为此,我有一个循环,我在其中调用第一个服务以从 API 获取数据。基本结构是:
while i
有数据要上传
mFirstService.putMessage(请求)。
很好,问题是我每次 X 调用都有一个被拒绝的执行异常,我认为这可能是因为我每次接收消息时都会调用 asinc 任务。
为此,我正在考虑强制执行 asinck 任务来检查队列而不是执行它。
我希望你能理解我的问题。
谢谢