Android handler.postDelayed() przyspiesza po każdej iteracji

0

Mam takiego handlera:

    public void changeSpinnerWaitSelection2() {
    Runnable runnable = new Runnable()
    {
        public void run()
        {
            if (count <= 3) spinnerWait.setSelection(count, true);
            count++;
            handler.postDelayed(this, 500);
        }
    };
    runnable.run();
   }

który przyspiesza z każdą iteracją. Zmienna count jest zerowana w innym miejscu. Co jest w związku z tym nie tak z tym handlerem?

Podczas gdy mam podobną metodę, która robi to samo i działa niemal idealnie:

public void changeSpinnerWaitSelection() {
    TimerTask mTt1 = new TimerTask() {
        public void run() {
            mTimerHandler5.post(() -> {
                if (count > 4) { mTimer2.cancel();}
                if (count <= 3) spinnerWait.setSelection(count, true);
                count++;
            });
        }
    };
    mTimer2 = new Timer();
    mTimer2.scheduleAtFixedRate(mTt1, 0, 500);
}

Ale zdecydowanie będę preferował pierwszą wersję gdyż TimerTask wydaje się być szkodliwy dla jednego z moich sprzętów.

0

Co to znaczy przyspiesza? Jak wyglądają czasy wykonania akcji? Kiedy jest wywoływana metoda changeSpinnerWaitSelection()? Handler sam z siebie niczego nie przyspiesza. Po prostu wrzuca jakąś akcję na kolejkę po czasie przez Ciebie podanym.

0

TimerTask wydaje się być szkodliwy dla jednego z moich sprzętów.

Nie no musisz napisać co to znaczy bo umrę z ciekawości.

0

@marian pazdzioch: Gdzieś wyczytałem, że korzystanie z TimerTasków zamiast Handlerów może wywoływać Error NullPointerDereference jakiś błąd bez wysokopoziomowych szczegółów tylko z jakimiś nic nie znaczącymi ciągami znakaków i kodami hex w logach. I to się właśnie dzieje na jednym z moich sprzętówale nie wiem czy to właśnie przez to bo nie mam jak sprawdzić.

0

@Michał Sikora: to działanie wyglądało tak jakby ten parametr 500 zmniejszał się z każdą iteracją, no jakieś cuda. Okazało się, że nie użyłem klamer tam gdzie powinny być.

1 użytkowników online, w tym zalogowanych: 0, gości: 1