2013-07-27 3 views
0

J'essaie de déjeuner une méthode du gestionnaire d'alarme dans la même classe. Eh bien, dans ma classe de service que j'ai cette méthode:lancer une méthode après un certain temps

new loadSomeStuff().execute(); 

Comment puis-je lancer au bout de 3 heures à l'aide de gestionnaire d'alarme?

public class MyIntentService extends Service { 
    SharedPreferences prefs; 
    public static String prefName = "SecretFile"; 
    public static String version = "56"; 
    public final static int uniqueID = 1394885; 

    public void onCreate() { 
     super.onCreate(); 
     //i want after the alarm manager stop to launch this method. 
     new loadSomeStuff().execute(); 
    } 
+0

@ user2607848 J'ai revenue vos modifications à la recherche ion. S'il vous plaît commencer une nouvelle question si vous avez plus de problèmes plutôt que de changer complètement votre question initiale. Sinon, la réponse de CommonsWare n'a aucun sens. – Intrications

Répondre

2

Étape # 1: Créer un PendingIntent qui lancera votre service

Étape # 2: Obtenir un AlarmManager en appelant getSystemService() sur certains Context, comme votre activité

Étape # 3: Appel set() sur AlarmManager pour planifier votre PendingIntent exécuter en trois heures

Cependant:

  • S'il vous plaît envisager d'utiliser un IntentService si possible, au lieu d'un Service avec ce qui semble être un AsyncTask

  • Si vous anticipez ce travail à faire, même si l'appareil est en mode veille en trois heures, vous aurez besoin d'utiliser une alarme _WAKEUP et de style quelque chose à garder l'appareil éveillé pendant que le travail est en cours, comme WakefulBroadcastReceiver ou WakefulIntentService

+0

Pourquoi devrais-je utiliser IntentService au lieu du service? –

+1

@AndroidArabia: Pour que le service disparaisse dès que c'est fait, plutôt que de continuer à prendre de la mémoire. – CommonsWare

+0

Merci CommonsWare! –

Questions connexes