¿Por qué no AsyncTasks siempre funcionan dentro de un onClickListener?

He notado esto en los últimos meses. Si establezco un clickListener en un botón para ejecutar un AsyncTask, no siempre se ejecuta. Resuelvo el problema enrollando la línea de código que ejecuta el AsyncTask en un método.

Aquí está el código que no funciona todo el tiempo:

button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new CustomAsyncTask().execute(); } }); 

Aquí está mi solución:

 button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { executeAsyncTask(); } }); public void executeAsyncTask(){ new CustomAsyncTask().execute(); } 

No he notado el patrón de cuándo lo hace y no se rompe, pero me pregunto si alguien más ha notado esto?

Además, si alguien tiene una explicación de por qué esto sucede que sería genial también.

Gracias por adelantado.

EDITAR

Aquí está el CustomAsyncTask (sé que no se llama todo el tiempo porque no se imprime nada)

 private class CustomAsyncTask extends AsyncTask<Void, Void, Void>{ @Override protected Void doInBackground(Void... params) { Log.i("CustomAsyncTask", "doInBackground"); return null; } } 

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.