Уже несколько лет работаю с AsyncTask и проблем не наблюдаю, в начале пути были небольшие проблемы из-за того, что Activity завершал работу, а фоновая задача выполнялась и после выполнения крешил апп, но это были проблемы с кривости рук.
...
Для связи с активити использую listeners, да и в крайнем случае можно как внутренний класс его создать(чем я не балуюсь, по мне так лучше отдельный класс), для манипуляции присваиваю переменной на уровне активити(фрагмента) и при наступлении onStart/onStop останавливаю/запускаю задачу, и проблем с жизненным циклом хоста(Активити, Фрагмент...) не возникает
p.s. нужно запомнить, что после одного запуска задачи, его нужно заново создавать, поэтому при создании учтите это:
private AsyncTask task;
....
if(task == null || task.getStatus() == AsyncTask.STATUS_FINISHED) //можно/учитывать учитывать и другие состояния - PENDING, RUNNING.. это уже зависит от задачи
{
task = new....;
}
task.execute();
ну или вам не нужен отклик, а нужно просто выполнить какую-то задачу(загрузка файла и т.д.), то просто запускаем задачу и забываем про него