Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [Android] Task temporarizzato

    ciao!

    un cliente avrebbe mi ha chiesto una cosa che non so bene se si possa fare.
    in pratica ha tutta una serie di dispositivi, con android 9 e una app che stiamo sviluppando, che ogni sera vengono riportati alla base dai dipendenti.
    la sera, verso le 22/23, si devono sincronizzare con un db centrale attraverso delle web api.
    ma questa sincrinizzazione dovrebbe essere fatta in automatico dai dispositivi, senza "aiuto" dell'utente.
    è possibile fare una cosa del genere in android??

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,012
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Quote Originariamente inviata da Andrea1979 Visualizza il messaggio

    ho fatto un milione di ricerche, mi è uscito fuori di tutto a parte questo.
    che è l'unica cosa che sembra funzionare come mi serve:
    codice:
        public void testWork() {
            Calendar date = Calendar.getInstance();
    //        date.set(Calendar.HOUR, 23);
    //        date.set(Calendar.MINUTE, 0);
            date.set(Calendar.HOUR, 10);
            date.set(Calendar.MINUTE, 33);
    
    //        long delay = 86400000;
            long delay = 60000;
    
            Timer timer = new Timer();
            TimerTask timerTask = new TimerTask() {
                @Override
                public void run() {
                    Log.i("TASK", "ESEGUITO");
                }
            };
            timer.schedule(timerTask, date.getTime(), delay);
        }
    grazie mille!!

  4. #4
    ciao!

    ritorno sull'argomento.
    in quanto ero sicuro che mesi funzionasse correttamente, ma mi sono accorto che invece quando lo schermo è spento, e la app inattiva, invece il task non viene eseguito.

    in pratica viene eseguito solo quando il device è attivo con la app aperta.
    possibile invece fare in modo che venga eseguito anche con telefono inattivo??

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,012
    Ti ho suggerito male io. Per un task che continui l'esecuzione anche in background credo che serva qualcosa di più di TimerTask:

    https://developer.android.com/guide/background

    in particolare AlarmManager:
    https://developer.android.com/traini...eduling/alarms

    Lì trovi anche la spiegazione di come settare l'esecuzione anche se l'app va in idle.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    ok grazie, sembra funzionare:
    codice:
    AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class);
    PendingIntent alarmIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
    
    Calendar date = Calendar.getInstance();
    date.setTimeInMillis(System.currentTimeMillis());
    date.set(Calendar.HOUR_OF_DAY, 9);
    date.set(Calendar.MINUTE, 51);
    
    try {
        alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, date.getTimeInMillis(), AlarmManager.INTERVAL_DAY, alarmIntent);
        alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 60 * 1000, alarmIntent);
    } catch (NullPointerException ex) {
        Log.e("NULLP", ex.getMessage());
    }
    aggiungendo tutto il resto.
    faccio un pò di test più approfonditi!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2021 vBulletin Solutions, Inc. All rights reserved.