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

Background Service po jakimś czasie się wyłącza.

Object Storage Arubacloud
0 głosów
131 wizyt
pytanie zadane 11 maja 2016 w Android, Swift, Symbian przez KubenQPL Maniak (62,820 p.)
public class BackgroundService extends Service {
    private static final int FIRST_NOTIFICATION = 9;
    private static final int SECOND_NOTIFICATION = 13;

    Timer t1;
    Timer t2;
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId)
    {
        t1=null;
        t2=null;
            Log.d("Service","Service Started!");
            Date da = new Date();
            da.setTime(System.currentTimeMillis());
            if(da.getHours()>=FIRST_NOTIFICATION){
                da.setDate(da.getDay()+1);
            }
            da.setHours(FIRST_NOTIFICATION);
            da.setMinutes(0);
            da.setSeconds(0);
            if(t1==null) {
                t1 = new Timer();
                t1.schedule(new TimerTask() {
                    @Override
                    public void run() {
                        pushNotification();
                    }
                }, da, 24 * 60 * 60 * 1000);
            }
            Date d2 = new Date();
            d2.setTime(System.currentTimeMillis());
            if(d2.getHours()>=SECOND_NOTIFICATION){
                d2.setDate(d2.getDay()+1);
            }
            d2.setHours(SECOND_NOTIFICATION);
            d2.setMinutes(0);
            d2.setSeconds(0);
            if(t2==null){
                t2 = new Timer();
                t2.schedule(new TimerTask() {
                    @Override
                    public void run() {
                        pushNotification();
                    }
                },d2,24*60*60*1000);
            }


        return Service.START_STICKY;
    }

    @Override
    public void onCreate() {
        super.onCreate();

    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d("Service","Service Stoped!");
        t1.cancel();
        t2.cancel();

    }
}

Przez jakąś część dnia działa w tle lecz po jakimś czasie się wyłącza i nie wyświetla powiadomień.

1 odpowiedź

0 głosów
odpowiedź 15 maja 2016 przez WWOTEX Mądrala (6,200 p.)

Aby serwis działał cały czas, z tego co wiem, musi być FOREGROUND.
 

Notification notification = new Notification();
startForeground(1, notification);

Obiekt Notification możesz rozwinąć, bo to będzie się cały czas wyświetlać na górnym pasku androida.

A jeszcze możliwe, że masz w telefonie taki wbudowany system oszczędzania energii. Ja tak miałem w Huawei, ale znalazłem w Ustawieniach telefonu, w zakładce Oszczędność Energii możliwość dodania wyjątków do niektórych aplikacji. Chodziło o to, że telefon sam wyłączał wszystkie nieużywane przez użytkownika serwisy w celu oszczędzania energii.

komentarz 15 maja 2016 przez KubenQPL Maniak (62,820 p.)
Ale to sprawi że to powiadomienie będzie nonstop? Bo mi zależy żeby się regularnie wyświetlało codziennie o określonych godzinach ( 9 i 13), jednak to wygląda tak że się wyświetli może 2 razy a następnego dnia już się nie wyświetli lub wyświetla się w całkiem losowych godzinach.
komentarz 15 maja 2016 przez WWOTEX Mądrala (6,200 p.)
z własnego doświadczenia wiem, że tylko foreground service może działać wiecznie ... ale tak, on będzie cały czas wyświetlać powiadomienie
... ale w sumie są serwisy np. facebook które pracują bez powiadomień, tyle że chyba te serwisy nie tyle pracują cały czas, co same się włączają gdy jest włączony internet

Podobne pytania

0 głosów
0 odpowiedzi 121 wizyt
0 głosów
1 odpowiedź 441 wizyt
+1 głos
1 odpowiedź 128 wizyt
pytanie zadane 2 kwietnia 2021 w JavaScript przez kajman_Rrzeczny Użytkownik (960 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

61,964 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!

...