• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wykonywanie czynności po danym czasie - zapętlenie

Object Storage Arubacloud
0 głosów
1,112 wizyt
pytanie zadane 26 sierpnia 2017 w Java przez fipooo Bywalec (2,880 p.)

Załóżmy że jakiś przycisk wykonuje jakąś czynność, ale chciałbym aby nie trzeba było klikać na przycisk i ta czynność wykonywała by się w pętli co .np 30sec i tak w nieskończoność. Bawiłem się do i while ale przy ograniczonej ilości razy wykonania wywalało od razu ostatnie wykonanie a przy nieograniczonej wywalało program :(. I nie wiem jak dodać przerwę pomiędzy wykonywaniem się pętli.

TextView textView = (TextView)findViewById(R.id.texview);
        int a =0;
        while(a<10){
            a ++;
            String b = Integer.toString(a);
            textView.setText(b);
        }
        textView.setText("koniec");

I teraz chciałbym aby ta pętla wykonywała się nieskończenie wiele razy ale z przerwą co 30sec. I wypisywała zmienną 'a' co sec. Czyli wchodzimy i zaczyna się odliczanie od 1 do 9 a potem mamy przerwę 30sec i znowu odliczanie od 1 do 9. Oczywiście ten kod to tylko przykład i chciałbym to zaimplementować do większego projektu na którym się uczę :).

3 odpowiedzi

+1 głos
odpowiedź 26 sierpnia 2017 przez marcin99b Szeryf (82,040 p.)

Dlaczego pętla while a nie for?
Masz wykonywanie pętli z góry ustaloną ilość razy, while bardziej pasuje do sytuacji typu "kiedy nie ma internetu, próbuj się połączyć" a nie "zrób to X razy"

A twój problem można zrobić "usypiając"/zatrzymując aplikacje na jakiś czas (w podanym przypadku wątek, robiąc na kilku wątkach nie wywali braku odpowiedzi, bo tylko jeden będzie przerywany, reszta będzie działać) LINK

komentarz 26 sierpnia 2017 przez fipooo Bywalec (2,880 p.)

Jeżeli mam taką pętle to nie powinno mi wyrzucać do textview za każdym razem cyfry o 5 większą? Bo od razu wywala mi 60.

for(int i=0; i<=60; i=i+5) {
                    try {
                        Thread.sleep(200);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    String ii = Integer.toString(i);
                    textView.setText(ii);
                }
komentarz 26 sierpnia 2017 przez marcin99b Szeryf (82,040 p.)
Szczerze mówiąc nie pisze w Javie
Jedynie robiłem kilka prostych rzeczy i wiem że lubi się czepiać szczegółów

Spróbuj zrobić pętle w nowym wątku,
albo tak jak w przykładzie, akcje dać po Thread.sleep() chociaż według mnie to bez sensu

Nie jest przypadkiem tak, że program się zawiesza jak zatrzymujesz główny wątek i zaczyna działać dopiero jak skończy się pętla?

Za dużo ci nie pomogę, bo moje doświadczenie to głównie PHP
komentarz 26 sierpnia 2017 przez fipooo Bywalec (2,880 p.)
A co do php bo też mam zamiar się wziąć za naukę niedługo php. To czy lepiej się bawić z API steam czy też facebook w javie na androida, czy też lepiej wziąć te gotowce z githuba które są w php i wrzucić na serwer i dać odnośniki do tego w aplikacji? Robiłeś coś takiego? Bawiłeś się w tworzenie logowania poprzez inne strony/aplikacje?
1
komentarz 27 sierpnia 2017 przez marcin99b Szeryf (82,040 p.)
PHP to język w którym największą mocą są frameworki i popularność CMS

Wszystko zależy od tego co chcesz robić

Jeśli chcesz robić mniejsze stronki, głównie jako zlecenia dla małych firm i pojedynczych osób - idziesz głównie w CMS, na Wordpressie działa bardzo dużo małych stronek i blogów, a Prestashop jest często używany przez mniejsze firmy i osoby
W obu przypadkach jest mnóstwo drobnych zleceń typu "postaw strone/sklep spełniając X założenia", albo "stwórz plugin dopasowany do klienta"
Nie mówie że duże firmy z tego nie korzystają, ale praca z tymi CMS to głównie mniejsze projekty

Co do frameworków, tutaj wchodzą średnie i duże aplikacje (nie mówie że nie używa się ich do drobnych rzeczy, ale większość ofert pracy to już aplikacje internetowe, przy których pracuje więcej ludzi, którzy rozwijają dany produkt przez długi czas)
Przykładowe frameworki to Symfony3(rozbudowane, dla dużych projektów), Laravel5(lekki, do mniejszych rzeczy), YII2(podobno najbardziej wydajny i szybki)

Dodatkowo każdy framework posiada sporo pakietów (inna nazwa dodatkowych bibliotek/pluginów), przykładowo w Symfony mamy FosUserBundle do grzebania przy użytkownikach, albo KnpPaginatorBundle do stronicowania
Masz jeszcze system ORM, np Doctrine do zarządzania bazą danych, coś jak Entity Framework w C#

W skrócie
CMS to mniejsze zlecenia, mniejsze projekty
Frameworki to większe zlecenia, większe projekty
Ale żeby nie było - nie zawsze tak jest, czasami jest odwrotnie, jednak jest to raczej rzadkość
Fakt że Wordpress daje możliwość stworzenia forum a Symfony pozwala na zbudowanie własnego małego bloga, nie oznacza, że wystarczająco dużo osób będzie z tego korzystać i tym samym dawać nam zatrudnienie
+1 głos
odpowiedź 26 sierpnia 2017 przez mbabane Szeryf (79,280 p.)
Byc moze trzeba uzyc watkow, a do zatrzymania mozna uzyc Thread.sleep(milisekundy).
+1 głos
odpowiedź 26 sierpnia 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Do wykonywania zadań co określony czas  Java ma specjalne klasy biblioteczne. W twoim przypadku użył bym klasy Timer i TimerTask albo ScheduledThreadPoolExecutor
komentarz 26 sierpnia 2017 przez fipooo Bywalec (2,880 p.)
A na androida? Bo nie mogę znaleźć żadnego tutka z użyciem TimerTask na androidzie. Mi aktualnie jest potrzebne powtarzanie cykliczne i z tego co znalazłem w kodzie jest toolkit a tego nie ma w android sdk i wywala mi błąd. A nie wiem czym i jak to zastąpić jeżeli się da.

Podobne pytania

0 głosów
1 odpowiedź 439 wizyt
pytanie zadane 24 września 2017 w PHP przez Tomasz Macura Nowicjusz (120 p.)
+1 głos
2 odpowiedzi 544 wizyt
pytanie zadane 16 grudnia 2016 w Java przez TheFunny Gaduła (3,420 p.)
0 głosów
1 odpowiedź 84 wizyt
pytanie zadane 13 maja 2021 w Java przez Sneaky4Coding Nowicjusz (180 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...