Лень читать ваш код, но объясню принцип:
Объявляете интерфейс с методом taskCompleted(ResultType result());
Создаете класс MyAsyncTask (наследник от AsyncTask), добавляете поле для интерфейса: private onTaskCompleted task;
добавляете конструктор, где принимаете активити(должен реализовать выше созданные интерфейс) и приводите к типу интерфейса: task = (onTaskCompleted) activity;
Нужно еще и логи добавить, чтоб точный ответ дать.
В вашем случае полагаю, что проблема в том, что вы пытаетесь загрузить данные в MainThread, подключение к интернету , а также ресурсоемкие задачи нужно вынести в отдельный поток.
Это зависит от функции, если функции отделены от конкретной активити, то можно их вынести в какой-нибудь класс хелпер, к примеру HelperClass и сделать их статичными.
А вы пробовали искать?
Там нет никакой магии, простое скачивание страницы, а по этому поводу и даже именно по вашему вопросу есть куча информации в поиске
Добавьте метод, который обновляет данные и при нажатии на кнопку AlertDialog или на слушателе onCanceled... вызываете этот метод и даже не пытайтесь ради этого перезапускать Activity, это извращение
Android приложение отправляет запрос на сервер, php скрипт или что-нибудь еще выдает ответ.
script.php:
<?php
$var = "Something";
echo $var;
^^^
Вот скрипт, который выводит значение переменной. Осталось загрузить данную страницу( http://site.ru/script.php ) через Android, все это есть в просторах интернета