我正在检索所有用户控件中已创建的数据。并且有3个Spinners因此我使用SERIAL_EXECUTOR
逐个执行它。但现在问题是,一个Spinner
根据另一个Spinner
检索数据。
因此尽管AsyncTask
正在进行Spinner
,我应该使用哪个SERIAL_EXECUTOR
执行程序AsyncTask
来加载其数据。{
简而言之,我想知道即使SERIAL_EXECUTOR
正在进行中,我应该使用哪个{{1}}执行该任务。
答案 0 :(得分:3)
如果你想与另一个AsyncTask
并行执行,那么你可以像这样使用THREAD_POOL_EXECUTOR
:
AsyncTask task = new SomeAsyncTask();
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
但我警告你,这可能不会像你想的那样好。如果您正在执行的AsyncTasks
执行相当多的工作而不是并行执行它们会大大减慢它们的速度。如果可能,尝试按顺序执行任务,只有在必要时才能并行执行。如果您需要加载依赖于其他类型数据的数据,请考虑在一个大的AsyncTask
中进行,而不是将工作拆分为AsyncTasks
。始终尽量将AsyncTasks
或Threads
的金额保持在最低水平。您的应用加载速度越快,就越少。