Android AsyncTask hilos límites?

Estoy desarrollando una aplicación donde necesito actualizar cierta información cada vez que el usuario inicia sesión en el sistema, también uso la base de datos en el teléfono. Para todas esas operaciones (actualizaciones, recuperación de datos de db y etc.) utilizo tareas asíncronas. Como hasta ahora, no veía por qué no debería usarlos, pero recientemente experimenté que si hago algunas operaciones, algunas de mis tareas asíncronas simplemente se detienen en la ejecución previa y no saltan a doInBackground. Eso era demasiado extraño para dejarlo así, así que desarrollé otra aplicación simple solo para verificar qué está mal. Y lo suficientemente extraño, obtengo el mismo comportamiento cuando el recuento de tareas asíncronas totales alcanza 5, el sexto se detiene en la ejecución previa.

¿Tiene Android un límite de AsyncTasks en Actividad / Aplicación? ¿O es solo un error y se debe informar? ¿Alguien experimentó el mismo problema y tal vez encontró una solució

Aquí está el código:

Simplemente cree 5 de esos hilos para trabajar en segundo plano:

private class LongAsync extends AsyncTask<String, Void, String>
{
    @Override
    protected void onPreExecute()
    {
        Log.d("TestBug","onPreExecute");
        isRunning = true;
    }

    @Override
    protected String doInBackground(String... params)
    {
        Log.d("TestBug","doInBackground");
        while (isRunning)
        {

        }
        return null;
    }

    @Override
    protected void onPostExecute(String result)
    {
        Log.d("TestBug","onPostExecute");
    }
}

Y luego crea este hilo. Ingresará preExecute y se bloqueará (no irá a doInBackground).

private class TestBug extends AsyncTask<String, Void, String>
{
    @Override
    protected void onPreExecute()
    {
        Log.d("TestBug","onPreExecute");

        waiting = new ProgressDialog(TestActivity.this);
        waiting.setMessage("Loading data");
        waiting.setIndeterminate(true);
        waiting.setCancelable(true);
        waiting.show();
    }

    @Override
    protected String doInBackground(String... params)
    {
        Log.d("TestBug","doInBackground");
        return null;
    }

    @Override
    protected void onPostExecute(String result)
    {
        waiting.cancel();
        Log.d("TestBug","onPostExecute");
    }
}

Respuestas a la pregunta(6)

Su respuesta a la pregunta