J'essaie d'utiliser un service pour effectuer un appel régulier vers mon API. La classe asynchrone que j'utilise pour effectuer des appels HTTP externes renvoie des informations à un gestionnaire qui est passé.Android: instancier un gestionnaire dans un TimerTask au sein d'un service
Une version simplifiée ci-dessous est disponible sur la ligne où le gestionnaire est instancié (sans trace de pile). Une idée pourquoi? Y a-t-il une meilleure façon de le faire?
package com.fred.services;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;
public class NotificationService extends Service {
private static final String TAG = "com.fred.services NotificationService";
public long delay = 0;
public long period_in_minutes = 10;
public long period = 1000*60*period_in_minutes;
private Timer timer = null;
private TimerTask task = new TimerTask() {
@Override
public void run() {
Handler h;
Log.i(TAG, "now you see it");
h = new Handler();
Log.i(TAG, "now you don't");
}
};
@Override
public void onCreate(){
super.onCreate();
if (timer == null) startservice();
}
private void startservice() {
if (timer == null) timer = new Timer();
timer.scheduleAtFixedRate(task, delay, period);
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
}
Merci, ce post http://stackoverflow.com/questions/4459058/alarm-manager-example contient un lien vers votre explication et un exemple. –