understanding parallel Async Task in Android

In meiner Anwendung verwende ich an vielen Stellen Async-Aufgaben. In letzter Zeit habe ich ein Problem damit, dass doInBackground für die unten stehende Async-Aufgabe nicht aufgerufen wird. Dies geschieht, wenn ich die unten stehende Async-Aufgabe zum dritten Mal ausführe (andere Async-Aufgaben sind ebenfalls vorhanden) Laufen)

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());
    }
}

Ich führe die obige Aufgabe aus als,

 StatusTask  tTask = new StatusTask(device);   
 tTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

Ich arbeite mit Android Version 4.4.3.

Wie erfahre ich, wie viele Synchronisierungsaufgaben zurzeit in meiner App ausgeführt werden? Bcz Ich denke, die Anzahl CORE_POOL_SIZE könnte das Problem verursachen.

Oder wenn ein Deadlock oder eine andere Situation eintritt und die Ausführung einer neuen Async-Aufgabe blockiert wird, gibt es in Android Studio eine Möglichkeit, die anderen möglicherweise nicht nützlichen Async-Aufgaben zu identifizieren und zu beenden?

Wenn ich CustomThreadPoolExecutor als disconnectTask.executeOnExecutor (mCustomThreadPoolExecutor) verwende; mit mehr CorePoolSize funktioniert es gut, aber doInBackground () der nächsten Async-Task, die AsyncTask.THREAD_POOL_EXECUTOR verwendet, wird nicht aufgerufen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage