2012-04-07 5 views
1

Sorry, wenn die Frage ein bisschen irreführend ist.Wie Zeit der Auswahl in einem Kalenderobjekt festlegen?

Ich habe eine andere Frage früher gestellt und mit ihrer Hilfe bin ich soweit gekommen. Hier ist das Problem.

Ich soll einen Dienst zu einer bestimmten Zeit starten. Jetzt ... startet der Dienst, wenn ich ihn sofort unter Verwendung der aktuellen Zeit von einem Kalenderobjekt aus starte, aber wenn ich die Zeit manuell einstelle, wird der Dienst nicht gestartet. Hier ist der Code:

Calendar myCal = Calendar.getInstance(); 
    myCal.set(Calendar.HOUR_OF_DAY, 21); 
    myCal.set(Calendar.MINUTE, 4); 

    // Will use putExtras here to give service the details of which profile to activate 
    Intent intent = new Intent(Create.this, AutoBot.class); 
    PendingIntent pintent = PendingIntent.getService(Create.this, 0, intent, 0); 
    AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, myCal.getTimeInMillis(), 5*1000, pintent); 

Jetzt sollte dies technisch funktionieren, aber es ist nicht. Und das ist, warum ich brauche Ihre Hilfe :(

Auch, wenn ich mehrere Trigger haben (Alarme per se), was wäre das dritte Argument von setRepeating sein?

Antwort

0

Ich glaube, Sie müssen Tag Monat einzurichten und Datum in Millis ist vom 1. Januar 1970

+0

Aber ich initialisiere das Kalender-Objekt mit aktuellem Datum/Uhrzeit. Warum sollte ich das ändern müssen? Und kannst du mir bitte erklären, was ich in Calendar.DATE/YEAR einfügen muss? – Asim

0

Ich denke, dass dieser Link Ihre Frage beantworten kann.Es erklärt eine Begrenzung in das System, in dem die Wecksperre, die der Alarmmanager hält, zu früh wenn veröffentlicht wird Lieferung zu einem Service Siehe diese Diskussion: http://groups.google.com/group/android-developers/browse_thread/thread/2b98206d18a0192f/

Hoffe, das hilft.

+0

Der Code funktioniert gut, wenn ich die tatsächliche aktuelle Zeit verwende (mit Calendar.getInstance und dann diesen Kalender verwenden, um aktuelle Zeit zu erhalten). Wenn ich jedoch einen anderen Kalender erstelle und versuche, seine Zeit manuell einzustellen, weigert sich der Code zu arbeiten. – Asim

+0

Wie der Android-Techniker in dem Beitrag, auf den oben verwiesen wurde, erläutert hat, ist der Mechanismus zur Verwendung eines Alarm-Managers zum Starten eines Dienstes nicht zuverlässig. Der Post erklärt einen zuverlässigeren Weg, dies zu erreichen. –