Понимание параллельной Async Task в Android
В моем приложении я использую асинхронные задачи во многих местах, в последнее время я сталкиваюсь с проблемой, когда doInBackground нижеприведенной асинхронной задачи не вызывается, это происходит, когда я выполняю нижеприведенную асинхронную задачу в третий раз (другие асинхронные задачи также выполняются ).
protected class StatusTask extends AsyncTask<Void, Void, Void> {
private final BluetoothDevice device;
public StatusTask(BluetoothDevice device) {
this.device = device;
}
@Override
protected Void doInBackground(Void... voids) {
while (true) {
if (someCondition) {
Log.D(TAG,"hi hello")
break;
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
//e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(Void result) {
tTask=null;
}
@Override
protected void onCancelled() {
super.onCancelled();
System.out.println("onCancelled " + this.isCancelled());
}
@Override
protected void onCancelled(Void aVoid) {
super.onCancelled(aVoid);
System.out.println("onCancelled result " + this.isCancelled());
}
}
я выполняю вышеуказанную задачу как,
StatusTask tTask = new StatusTask(device);
tTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
Я работаю на Android версии 4.4.3.
Как узнать, сколько задач синхронизации в настоящее время выполняется в моем приложении? Bcz Я думаю, что CORE_POOL_SIZE count может быть причиной проблемы.
Или, если произошла тупиковая ситуация или возникла какая-либо другая ситуация и блокируется выполнение новой задачи Async, есть ли способ в Android Studio идентифицировать и убить другие задачи Async, которые могут оказаться бесполезными?
Если я использую CustomThreadPoolExecutor в качестве disconnectTask.executeOnExecutor (mCustomThreadPoolExecutor); с большим количеством CorePoolSize он работает нормально, но doInBackground () следующей асинхронной задачи, использующей AsyncTask. THREAD_POOL_EXECUTOR не вызывается.