Comprender la tarea Async paralela en Android
En mi aplicación, estoy usando tareas asíncronas en muchos lugares, recientemente me encuentro con un problema en el que no se llama a doInBackground de la tarea asíncrona a continuación, esto sucede cuando ejecuto la tarea asíncrona a continuación por tercera vez (otras tareas asíncronas también se están ejecutando )
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());
}
}
Estoy ejecutando la tarea anterior como,
StatusTask tTask = new StatusTask(device);
tTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
Estoy ejecutando la versión de Android 4.4.3.
¿Cómo puedo saber cuántas tareas de sincronización se están ejecutando actualmente en mi aplicación? Bcz supongo que el conteo CORE_POOL_SIZE podría estar causando el problema.
O si se produce un punto muerto o cualquier otra situación y se bloquea la ejecución de una nueva tarea Async, ¿hay alguna forma en Android Studio para identificar y eliminar las otras tareas Async que pueden no ser útiles?
Si uso CustomThreadPoolExecutor como disconnectTask.executeOnExecutor (mCustomThreadPoolExecutor); con más CorePoolSize funciona bien, pero no se llama a doInBackground () de la siguiente tarea Async que usa AsyncTask.THREAD_POOL_EXECUTOR.