Autore Topic: Timer Service non funzionante  (Letto 554 volte)

Offline skylong

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S3
Timer Service non funzionante
« il: 09 Maggio 2013, 23:57:11 CEST »
0
Ciao a tutti,
ho questo codice di un service che vorrei forse ripetuto periodicamente...
Codice (Java): [Seleziona]
import java.util.Timer;
import java.util.TimerTask;

import android.app.AlarmManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import android.widget.Toast;


public class avvisoAmb extends Service {
        private Timer ServUpdTimer = new Timer();
        private static  long TMR_INTERVAL = 10*1000;
        //final SharedPreferences prefs = getSharedPreferences("amb", 0);

        @Override
        public IBinder onBind(Intent intent) {
                return null;
        }
       
        @Override
        public void onCreate() {
                /*Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
                Log.d(TAG, "onCreate");*/

                //Log.e("TESTser","GIRO");
                super.onCreate();
                Log.e("NOT","Primadeltest");
               
               
        }

        @Override
        public void onDestroy() {
                final SharedPreferences prefs = getSharedPreferences("amb", avvisoAmb.MODE_MULTI_PROCESS);
                SharedPreferences.Editor editor = prefs.edit();
                editor.putBoolean("autoStart", false);
                editor.commit();
                Toast.makeText(this, "Avvisi uscite DISATTIVATO", Toast.LENGTH_LONG).show();
               
                super.onDestroy();
                /*if(timer!=null){
                        timer.cancel();
                }
                timer=new Timer();*/

               
               
               
                //Log.d(TAG, "onDestroy");
        }
       
        @Override
        public void onStart(Intent intent, int startid) {
                //Bundle com = intent.getExtras();
                final SharedPreferences prefs = getSharedPreferences("amb", avvisoAmb.MODE_MULTI_PROCESS);
                Log.e("autostart",prefs.getBoolean("autoStart", false)+"");
                if(prefs.getBoolean("autoStart", false)){
                        Toast.makeText(this, "Avvisi uscite ATTIVATO", Toast.LENGTH_LONG).show();
                        //onCreate();
                        StartServUpdateTask();
                }else{
                        onDestroy();
                }
                //Log.d(TAG, "onStart");
        }    
       
        private void StartServUpdateTask() {
        ServUpdTimer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
            }
        }, 0, TMR_INTERVAL);
    }

       

}

Il SharedPreferences "autostart" lo setto true al momento in cui richiamo il service...ma il timer non funziona...il service va una volta sola e basta.
Se vado a controllare però me lo da come attivo...qualcuno a qualche idea sul perchè non mi funziona??

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Timer Service non funzionante
« Risposta #1 il: 10 Maggio 2013, 01:55:35 CEST »
0
Ma in che senso il Timer non funziona? l'implementazione del suo run() è vuota... cosa dovrebbe fare poverino?  :-P

Offline skylong

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S3
Re:Timer Service non funzionante
« Risposta #2 il: 10 Maggio 2013, 09:25:21 CEST »
0
Ma in che senso il Timer non funziona? l'implementazione del suo run() è vuota... cosa dovrebbe fare poverino?  :-P

Nel senso che viene fatto una volta sola quello che cè nel onCreate() e non ogni 10sec...

Quindi se lo correggo così dovrebbe andare??
Codice (Java): [Seleziona]
private void StartServUpdateTask() {
        ServUpdTimer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                onCreate();
            }
        }, 0, TMR_INTERVAL);

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Timer Service non funzionante
« Risposta #3 il: 10 Maggio 2013, 10:31:30 CEST »
0
Citazione
Nel senso che viene fatto una volta sola quello che cè nel onCreate() e non ogni 10sec...
Ok, ma dal codice che hai postato questo non può succedere...

Citazione
Quindi se lo correggo così dovrebbe andare??
No, perchè non puoi chiamare tu l'OnCreate.

Offline skylong

  • Utente junior
  • **
  • Post: 51
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S3
Re:Timer Service non funzionante
« Risposta #4 il: 10 Maggio 2013, 12:24:46 CEST »
0
mmmh...e quindi se ad esempio vorrei che ciclicamente venga fatto

Codice (Java): [Seleziona]
Log.e("NOT","Primadeltest");
lo metto nel run() e non ne onCreate??

ovviamente poi il codice finale che deve essere ripetuto sarà un altro ma devo ancora svilupparlo...
« Ultima modifica: 10 Maggio 2013, 15:33:24 CEST da skylong »