Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
#1

Абстрактное наследование от AsyncTask - Программирование Android

09.02.2014, 09:01. Просмотров 647. Ответов 8
Метки нет (Все метки)

Нужно реализовать иерархию наследования от AsyncTask.
Цель - переопределить метод.

Как в Java реализуется шаблонное наследование ?

необходимо оставить возможность пользователю задавать параметры AsyncTask<Params, Progress, Result>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2014, 09:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Абстрактное наследование от AsyncTask (Программирование Android):

AsyncTask - Программирование Android
Привет. Знаю, что в AsyncTask doInBackground() обращатся к компонентам UI нельзя. Когда я пытаюсь обновить вывод (в EditText) в...

AsyncTask и get() - Программирование Android
Создаю асинхронный процесс, где в onPreExecute() запускаю анимированный ProgressDialog. После выполнения задачи нужно выполнить действия....

AsyncTask - Программирование Android
Здравствуйте, при использовании двух одинаковых методов получается разный результат. AsyncTask в одном случае успешно передает данные в...

AsyncTask - Программирование Android
Использую AsyncTasc class MyT extends AsyncTask&lt;Void, Void, Void&gt; { @Override protected Void doInBackground(Void......

Работа с AsyncTask - Программирование Android
Попробовал использовать AsyncTask и возник вопрос. У меня есть несколько ф-й, которые парсят текстовые файлы и заполняют таблицы БД. ...

AsyncTask тормозит - Программирование Android
Подскажите пожалуйста, делалю загрузку данных с сервера через asyncTask и возвращаются результат, а дальше делаю обработку этих данных во...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
verylazy
Заблокирован
09.02.2014, 10:42 #2
http://developer.android.com/referen...AsyncTask.html
на странице первый же листинг с кодом
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
09.02.2014, 10:54  [ТС] #3
Этот листинг уже задает типы параметров. А я хочу их оставить шаблонными для наследованич
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
09.02.2014, 11:17 #4
Цитата Сообщение от xbarmaglot Посмотреть сообщение
Этот листинг уже задает типы параметров. А я хочу их оставить шаблонными для наследованич
Может вот так тогда?
Java
1
2
3
abstract class MyAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> { 
    
}
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
09.02.2014, 11:26  [ТС] #5
похоже ближе к истине.
Как тогда определить doInBackground ?

Например, я хочу возвращать результат Boolean, но параметры задавать шаблонными
Java
1
2
3
4
5
6
7
public abstract class MyTask<Params, Progress> extends AsyncTask<Params, Progress, Boolean>
{
    @Override
    protected Boolean doInBackground(???)
        {
        }
}
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
09.02.2014, 11:43 #6
Цитата Сообщение от xbarmaglot Посмотреть сообщение
Например, я хочу возвращать результат Boolean, но параметры задавать шаблонными
А у вас сейчас так и есть:
Ваш класс:
Java
1
2
3
abstract class MyTask<Params, Progress> extends AsyncTask<Params, Progress, Boolean> {
    
}
Использование класса:
Java
1
2
3
4
5
6
7
8
        MyTask<String, Integer> task = new MyTask<String, Integer>() {
            @Override
            protected Boolean doInBackground(String... params) {
                //TODO
                return true;
            }
        };
        task.execute("test","test2");
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
09.02.2014, 11:49  [ТС] #7
Не совсем так. doInBackground я хочу переопределить в наследниках иерархии.
Я лишь хочу возвращать Boolean, но параметры оставить шаблонными.

То того, пока не будет создан экземпляр я не могу знать параметры.
А в Вашем примере создается уже экземпляр с известными параметрами.

Добавлено через 1 минуту
То есть мне нужно определение именно абстрактного класса
Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
09.02.2014, 11:57 #8
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
abstract class AbstractTask<T, U, R> extends AsyncTask<T, U, R> {
    
    @Override
    protected abstract R doInBackground(T... params);
    
}
    
class StringTask extends AbstractTask<String, String, String> {
 
    @Override
    protected String doInBackground(String... params) {
        return null;
    }
    
}
xbarmaglot
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 248
09.02.2014, 12:03  [ТС] #9
Netscape, понятно. А если result определен, то
Java
1
2
3
4
5
6
abstract class AbstractTask<T, U> extends AsyncTask<T, U, Boolean> {
    
    @Override
    protected abstract Boolean doInBackground(T... params);
    
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2014, 12:03
Привет! Вот еще темы с ответами:

AsyncTask+CheckBox - Программирование Android
Здравствуйте, интересует вопрос нужно в функцию AsyncTask послать несколько строк, в зависимости какие Чекбоксы чекнуты. Ну например: ...

AsyncTask и Jsoup - Программирование Android
Не работает вот такой код: package com.example.projecta; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import...

Отмена AsyncTask - Программирование Android
Привет. Есть такой код: @Override protected Void doInBackground(Void... params) { try { Interpret(Source.get()); }...

MainActivity AsyncTask - Программирование Android
Добрый вечер. Ребята тут небольшая проблема. Мне нужно Заполнить NavigatorDrawer (из базы). Почему когда я пытаюсь в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.02.2014, 12:03
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru