CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: carotix con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 31 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 8 su 8
Discussione:

Fare un Service o AlarmManager

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Dec 2012
    Località
    Nord
    Messaggi
    44
    Smartphone
    Galaxy Ace i - GT8530i

    Ringraziamenti
    1
    Ringraziato 3 volte in 3 Posts
    Predefinito

    Fare un Service o AlarmManager

    Mi hanno consigliato, per far rimanere attiva un'app in background, il service o l'alarm manager. Io sono piu' propenso per il primo, l'app ogni 10-15-20 secondi dovrà controllare un file on the net e vorrei sapere, visto ch è tanto che ci provo, come fare un Service appunto.
    Non mi servono link a documentazioni, le ho lette e le comprendo, ma mi servono esempi, semplici, non incasinati
    Solo gente che ci abbia lavorato per favore, so che volete aiutare ma spesso se non si è esperti (=non si ha esperienza) si sbaglia.

    Beh in ogni modo grazie per le risposte
    ________________________
    ricordatevi il tasto thanks!

  2.  
  3. #2
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da shadowyviper Visualizza il messaggio
    Mi hanno consigliato, per far rimanere attiva un'app in background, il service o l'alarm manager. Io sono piu' propenso per il primo, l'app ogni 10-15-20 secondi dovrà controllare un file on the net e vorrei sapere, visto ch è tanto che ci provo, come fare un Service appunto.
    Non mi servono link a documentazioni, le ho lette e le comprendo, ma mi servono esempi, semplici, non incasinati
    Solo gente che ci abbia lavorato per favore, so che volete aiutare ma spesso se non si è esperti (=non si ha esperienza) si sbaglia.

    Beh in ogni modo grazie per le risposte
    Ciao.
    Per cominciare devi creare una classe che estenda la classe Service, e implementare i metodi obbligatori, ovvero onCreate(), onDestroy(), onStart(Intent intent, int startId) - oltre che onBind() e onUnBind().
    I primi tre metodi sono importanti per una buona implementazione di un alarm manager.
    Il codice contenuto nel metodo onCreate() viene eseguito quando il servizio viene lanciato (di solito da una activity, con il comando startService(...) )
    Quindi normalmente viene utilizzato per inizializzare l'alarm manager.

    Ti faccio un esempio di una classe Service, chiamata ServizioSincronizzazione.class, in cui nel metodo onCreate viene creato un alarm manager che gira ogni 5 min, eseguendo il codice contenuto nel metodo onStart() (ora sono solo msg Toast, ma puoi metterci quel che vuoi):
    codice:
    public class ServizioSincronizzazione extends Service {
    
    	private Intent myIntent;
    	private PendingIntent pendingIntent;
            private AlarmManager alarmManager;
    	private Calendar calendar;
    	
    	public static final long DELAY_INTERVAL_SERVICE = 300; //es. 300 secondi = 5 minuti
    //quando vengo allocato in memoria la prima volta, eseguo queste istruzioni
    @Override
    	public void onCreate() { 
    	   super.onCreate();
    	   
    	   myIntent = new Intent(this, ServizioSincronizzazione.class);
    	   pendingIntent = PendingIntent.getService(this, 0, myIntent, 0);
    	   alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
    	   calendar = Calendar.getInstance();
    	   calendar.setTimeInMillis(System.currentTimeMillis());
    	   calendar.add(Calendar.SECOND, 10);
    	   alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), DELAY_INTERVAL_SERVICE*1000, pendingIntent);
    
    	   Toast.makeText(this, "Servizio in Background: ServizioSincronizzazione.onCreate()", Toast.LENGTH_LONG).show();
    	   
    	}
    	
    	@Override //ogni volta che giro eseguo questo codice
    	public void onStart(Intent intent, int startId){
    	super.onStart(intent, startId);		
    		Toast.makeText(this, "Servizio in Background: ServizioSincronizzazione.onStart()", Toast.LENGTH_LONG).show();
    	}
    	
    	@Override //quando muoio eseguo questo codice 
    	public void onDestroy(){
    	super.onDestroy();
    		Toast.makeText(this, "Servizio in Background: ServizioSincronizzazione.onDestroy()", Toast.LENGTH_LONG).show();
    	
    	}
    	
    	@Override
    	public IBinder onBind(Intent intent) {
    		Toast.makeText(this, "Servizio in Background: ServizioSincronizzazione.onBind()", Toast.LENGTH_LONG).show();
    		return null;
    	}
    	
    	@Override
    	public boolean onUnbind(Intent intent) {	
    		Toast.makeText(this, "Servizio in Background: ServizioSincronizzazione.onUnbind()", Toast.LENGTH_LONG).show();
    		return super.onUnbind(intent);
    	}
    	
    }
    Il servizio va avviato in una main class, quella che preferisci, con il comando:

    codice:
    startService(new Intent(this.getApplicationContext(), ServizioSincronizzazione.class));
    ma la manipolazione del servizio è da manuale.
    Rimango a disp, Ciao!
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  4. Il seguente Utente ha ringraziato frank17next per il post:

    theangi (22-01-13)

  5. #3
    Senior Droid L'avatar di theangi


    Registrato dal
    Oct 2011
    Messaggi
    340

    Ringraziamenti
    71
    Ringraziato 40 volte in 34 Posts
    Predefinito

    Grazie per il codice, molto chiaro.

    Aggiungo che far fare qualcosa in background ogni 5/10 secondi = annientare la batteria.
    Ti serve un insulto? Allora Insultify fa per te!

    Inoltre... My Unimore !

  6. #4
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da theangi Visualizza il messaggio
    Grazie per il codice, molto chiaro.

    Aggiungo che far fare qualcosa in background ogni 5/10 secondi = annientare la batteria.
    Beh si, l'intervallo a 5 secondi è veramente frequente, equivale ad un running continuo, è inevitabile, soprattutto se le operazioni che svolgi eseguono I/O o utilizzo linea dati.
    Non puoi schedulare almeno ogni 5 minuti?
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  7. #5
    Baby Droid


    Registrato dal
    Dec 2012
    Località
    Nord
    Messaggi
    44
    Smartphone
    Galaxy Ace i - GT8530i

    Ringraziamenti
    1
    Ringraziato 3 volte in 3 Posts
    Predefinito

    Scusate per il ritardo... Grazie mille della risposta mooolto esaustiva, appena posso provo... In teoria ogni 5 minuti no... Forse 30 secondi... Li farò presente a chi li vuole. Grazie mille!!!


    Inviato dal mio GT-S5830i usando Androidiani App
    ________________________
    ricordatevi il tasto thanks!

  8. #6
    Baby Droid


    Registrato dal
    Oct 2011
    Messaggi
    38

    Ringraziamenti
    4
    Ringraziato 1 volta in 1 Post
    Predefinito

    ma se il servizio è attivo quando il telefono viene spento, alla riaccensione del cellulare il servizio è ancora attivo?
    grazie

  9. #7
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Devi creare un BroadcastReceiver e abilitarlo a ricevere ACTION_BOOT_COMPLETED.
    Devi anche aggiungere nel manifest i permessi dell'app RECEIVE_BOOT_COMPLETED.
    Il service si avvierà al reboot del device in automatico

    Inviato dal mio Galaxy Nexus con Tapatalk 2
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  10. #8
    Androidiano VIP


    Registrato dal
    Mar 2013
    Messaggi
    1,060

    Ringraziamenti
    95
    Ringraziato 30 volte in 28 Posts
    Predefinito

    Quote Originariamente inviato da frank17next Visualizza il messaggio
    Devi creare un BroadcastReceiver e abilitarlo a ricevere ACTION_BOOT_COMPLETED.
    Devi anche aggiungere nel manifest i permessi dell'app RECEIVE_BOOT_COMPLETED.
    Il service si avvierà al reboot del device in automatico

    Inviato dal mio Galaxy Nexus con Tapatalk 2
    ma per far ripetere ogni lunedi alle 12 come posso fare ?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy