[Java] Android: передать функцию функции AsyncTask


Answers

В Java функции меньше, чем у первого класса, чем в JavaScript. AsyncTask предоставляет обратный вызов как метод в классе, который вы должны переопределить.

См. Создание запроса HTTP с помощью android для подкласса AsyncTask с реализацией doInBackground, которая делает веб-запрос.

Если вы хотите выполнять несколько HTTP-запросов с различными обратными вызовами, вы можете переопределить RequestTask и реализовать onPostExecute с различными реализациями обратного вызова. Вы можете использовать анонимный класс для имитации закрытия, который обычно использует обратный вызов JavaScript:

new RequestTask(){
    @Override
    public void onPostExecute(String result) {
        // Implementation has read only access to 
        // final variables in calling scope. 
    }
}.execute("http://stackoverflow.com");

Как показывает Xaver, вы также можете создать полномасштабный интерфейс для слушателя. Это кажется мне полезным только в том случае, если вы хотите реализовать пару функций по умолчанию onPostExecute и выбрать одну из этих реализаций по умолчанию для определенного вызова.

Question

Я новичок в android и очень привык к веб-разработке. в javascript, когда вы хотите выполнить асинхронную задачу, вы передаете функцию в качестве аргумента (обратный вызов):

http.get('www.example.com' , function(response){
   //some code to handle response
});

Мне было интересно, можем ли мы сделать то же самое с AsyncTask андроида, передать ссылку на onPostExecute() , и она запустит ее.

какие-либо предложения ?