2013-06-03 7 views
14

Ich bin neu bei Android. Ich arbeite an einer App, in der ich eine Aufgabe planen muss, die in Zukunft ausgeführt wird.So planen Sie eine Aufgabe mit Alarm Manager

Ich habe über AlarmManager gelesen und erfahren, dass wir dies mit AlarmManager erreichen können.

Kann mir bitte jemand über ein Tutorial oder eine Quelle erzählen, wo ich die Dinge bekomme.

Antwort

25

Inhalt aus dem Blog genommen Scheduling Task Using Alarm Manager in Android

public void scheduleAlarm(View v) 
{ 
    // The time at which the alarm will be scheduled. Here the alarm is scheduled for 1 day from the current time. 
    // We fetch the current time in milliseconds and add 1 day's time 
    // i.e. 24*60*60*1000 = 86,400,000 milliseconds in a day.  
    Long time = new GregorianCalendar().getTimeInMillis()+24*60*60*1000; 

    // Create an Intent and set the class that will execute when the Alarm triggers. Here we have 
    // specified AlarmReceiver in the Intent. The onReceive() method of this class will execute when the broadcast from your alarm is received. 
    Intent intentAlarm = new Intent(this, AlarmReceiver.class); 

    // Get the Alarm Service. 
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 

    // Set the alarm for a particular time. 
    alarmManager.set(AlarmManager.RTC_WAKEUP, time, PendingIntent.getBroadcast(this, 1, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT)); 
    Toast.makeText(this, "Alarm Scheduled for Tomorrow", Toast.LENGTH_LONG).show();  
} 

AlarmReceiver Klasse

public class AlarmReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 

     // Your code to execute when the alarm triggers 
     // and the broadcast is received. 

    } 
} 
+0

den Code oben tut, bedeutet, dass der Alarm die Aufgabe ausführen, wenn neue Tage erkannt wird? – Sen

+0

@Baras: es führt genau 24 Stunden nach dem Abfeuern aus, was sich subtil unterscheidet. In der Tat, das kann zweimal am selben Tag sein, wenn es gerade während der Sommerzeit richtig auftritt. –

+0

Dieser Code funktioniert nicht, wenn die Anwendung nicht im Hintergrund läuft. Bitte helfen Sie !! – Sidhartha

1

Get Alarm Service und Set Alarm:

PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent("com.xxxxx.tq.TQServiceManager"), PendingIntent.FLAG_UPDATE_CURRENT); 

    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 

alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 1000 , 30 * 1000 , pendingIntent); 

U brauchen eine broadcastreceiver, der dieses Ereignis erhalten

class Alarmreceiver extends Broadcastreceiver 
{ 
    //u can to task in onreceive method of receiver. 
} 

Vergessen Sie nicht, diese Empfänger in AndroidManifest registrieren Hoffnung Datei Das hilft dir.

Verwandte Themen