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

AsyncTask как дождаться окончания - Android

Восстановить пароль Регистрация
Другие темы раздела
Android Алгоритм распознавания форм на фото http://www.cyberforum.ru/android-dev/thread1214166.html
Здравствуйте, сотоварищи! Помогите найти или составить алгоритм/код для определения формы объекта на фото. (знаю, много хочу:cry:). Допустим фотографируешь девушки и чтобы автоматически выделяло грудь) Или голову) Нужно собственно выделение круглых объектов.
Android Logcat на устройстве Тестирую приложение, парсит сайт. На эмуляторе все проходит хорошо, а на телефоне иногда крашится в момент соединения к сайту. Как логировать ошибки, чтоб сохранялись в файл для последующего просмотра? Возможно ли это? http://www.cyberforum.ru/android-dev/thread1214126.html
Контролы поверх Google-карты Android
Всё активити занято гугл картой. Подскажите плиз как разместить контролы(button или imagebutton) поверх карты
Android Приложения с картами
Нащёл примерчик :https://www.youtube.com/watch?v=obkXKuXsnPQ Сделал всё как там, работает. тоесть место ля карты есть нопки есть стрелки для перемешения, но карты не видною может начальные коардиныты задат ь надо, или ещё что?? запускаю на Gallaxy S III
Android Аномалия с некоторыми моделями Samsung http://www.cyberforum.ru/android-dev/thread1213807.html
По какой-то непонятной причине в некоторых моделях самсунга при вызове Активити2 из Активити1 в Активити1 вызывается метод onDestroy() даже без использования метода finish(), т.е. вызывается onDestroy() при любых обстоятельствах, соответственно, при возвращении назад в Активити1 вызывается метод onCreate() вместо onResume(). Вот у товарища тот же вопрос...
Android Куда лучше записыать временные данные (массив данных) получаю много отчетов, например получил один отчет и потом ушел на вкладку отчет2 \ (при этом если массив данных первого отчета сохранять в глобальную переменную думаю памяти много сжирать будет ?) \ это все нужно чтобы если пользователь обратно вернулся в вкладку отчет1 не скачивать с инета опять тотже отчет... SQL lite чтоли использовать ? или глоб. переменные память много сжирать не будут... подробнее

Показать сообщение отдельно
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
22.06.2014, 16:36     AsyncTask как дождаться окончания
Так это вообще easy. Добавим ещё generic type.

Интерфейс это такая структура, которая описывает лишь правила поведения. Она описывает что нужно делать, но не КАК это делать.

Java
1
2
3
4
5
6
7
8
9
10
11
public interface IWorkerCallback<V> {
 
    void onBegin(); //Асинхронная операция началась
 
    void onSuccess(V data); //Получили результат
 
    void onFailure(Throwable t); //Получили ошибку
 
    void onEnd(); //Операция закончилась
 
}
2. Опишем абстрактную универсальную асинк таску


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public abstract class AbstractAsyncWorker<V> extends AsyncTask<Void, Void, V> {
    private IWorkerCallback<V> callback;
    private Throwable t;
 
    //В конструктор передаём интерфейс
    protected AbstractAsyncWorker(IWorkerCallback<V> callback) {
        this.callback = callback;
    }
 
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        if (callback != null) {
            callback.onBegin(); //Сообщаем через интерфейс о начале
        }
    }
 
    protected abstract V doAction() throws Exception; //Этот метод будем переопределять
 
    @Override
    protected V doInBackground(Void... params) {
        try {
            return doAction(); //В параллельном потоке вызываем абстрактный метод.
        } catch (Exception e) {
            t = e;
            return null;
        }
    }
 
    @Override
    protected void onPostExecute(V v) {
        super.onPostExecute(v);
        if (callback != null) {
            callback.onEnd(); //Сообщаем об окончании
        }
        generateCallback(v);
    }
 
    private void generateCallback(V data) { //Генерируем ответ
        if (callback == null) return;
        if (data != null) { //Есть данные - всё хорошо
            callback.onSuccess(data);
        } else if (t != null) {
            callback.onFailure(t); //Есть ошибка - вызываем onFailure
        } else { //А такая ситуация вообще не должна появляться)
            callback.onFailure(new NullPointerException("Result is empty but error empty too"));
        }
    }
}

3. Вызов.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class Test implements IWorkerCallback<Integer> {
 
    private void doSomethingAsyncOperaion() {
        new AbstractAsyncWorker<Integer>(this) {
            @Override
            protected Integer doAction() throws Exception {
                Thread.currentThread().wait(1000);
                return 1;
            }
        }.execute();
    }
 
    @Override
    public void onBegin() {
        Log.d("Async", "Begin");
    }
 
    @Override
    public void onSuccess(Integer data) {
        Log.d("Async", "Success:" + data);
    }
 
    @Override
    public void onFailure(Throwable t) {
        Log.d("Async", "Failure", t);
    }
 
    @Override
    public void onEnd() {
        Log.d("Async", "End");
    }
}
 
Текущее время: 04:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru