Autore Topic: Servizio che non si ferma  (Letto 1090 volte)

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Servizio che non si ferma
« il: 14 Luglio 2011, 00:46:43 CEST »
0
Ciao,
ho implementato un servizio in questo modo:

Codice: [Seleziona]
public class srvcAlarm extends Service {

        public static boolean STARTED = false;

        @Override
        public IBinder onBind(Intent intent) {
                // TODO Auto-generated method stub
                return null;
        }

        @Override
        public void onCreate() {
                // TODO Auto-generated method stub
                super.onCreate();
                Log.i("INFO", "SERVIZIO AVVIATO");

                Timer timer = new Timer();
                TimerTask task = new TimerTask() {

                        @Override
                        public void run() {
                                Log.i("INFO", "TASK ESEGUITO");
                        }
                };
                timer.schedule(task, 300, 10000);

        }

        @Override
        public void onDestroy() {
                // TODO Auto-generated method stub
                super.onDestroy();

                Log.i("INFO", "SERVIZIO ARRESTATO");

        }
}

il problema e che quando cerco di stopparlo, lui non si ferma e continua a girare, devo forse distruggere anche il timer ?
Grazie
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Servizio che non si ferma
« Risposta #1 il: 14 Luglio 2011, 01:18:23 CEST »
0
Ho aggiunto nell'evento ondestroy del servizio il seguente codice:

Codice: [Seleziona]
@Override
        public void onDestroy()
 {
                // TODO Auto-generated method stub
                super.onDestroy();

                Log.i("INFO", "SERVIZIO ARRESTATO");
                timer.cancel();
                timer.purge();
               

        }

Però così fermo il timer ma non uccido il servizio vero ?
Grazie
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Servizio che non si ferma
« Risposta #2 il: 14 Luglio 2011, 10:13:18 CEST »
0
Il servizio lo fermi con uno stopService oppure dall'interno dello stesso con stopSelf()

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Servizio che non si ferma
« Risposta #3 il: 14 Luglio 2011, 10:21:14 CEST »
0
Il servizio lo fermi con uno stopService oppure dall'interno dello stesso con stopSelf()
si, e soprattutto stopSelf() va fatto nella onStartCommand o dopo un evento, non nella onDestroy
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Servizio che non si ferma
« Risposta #4 il: 14 Luglio 2011, 17:41:13 CEST »
0
Ciao,
io richiamo lo startService da un Activity in questo modo:
Codice: [Seleziona]
protected void avvioServizio() 
        {
                // TODO Auto-generated method stub
                startService(new Intent(this, srvcAlarm.class));
               
        }

e lo stop service dalla stessa activity in questo modo:
Codice: [Seleziona]
protected void arrestaServizio()
        {
                // arresta
                stopService(new Intent(this, srvcAlarm.class));
                       
        }

Quando clicco sullo stop servizio, il servizio continua a girare.
Grazie
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Servizio che non si ferma
« Risposta #5 il: 15 Luglio 2011, 10:31:53 CEST »
0
ma l'applicazione ti da errore? il logcat comunica qualcosa?
guardando il metodo stopService, ci sono dei casi in cui il servizio può non fermarsi, ma comunque sono casi che non credo rientrino nel tuo.
Al più, lo stopService ti ritorna false?

http://developer.android.com/reference/android/content/ContextWrapper.html#stopService(android.content.Intent)
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:Servizio che non si ferma
« Risposta #6 il: 15 Luglio 2011, 11:22:34 CEST »
0
Ciao,
nessun errore, ho messo dei log per capire quando il servizio parte e quando entra nella destroy.
Lo stopservice mi ritorna true.
Grazie
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .