Perché il mio allarme è impostato in modo ricorsivo?

Ho due valori nel mio database:

Ora = 10

  • Perché la mia applicazione inizia incredibilmente lento (10s +) alla prima esecuzione, mostrando solo schermo bianco su android 5.0?
  • Come impostare la freccia a discesa in filettatura?
  • Come utilizzare startForeground?
  • Come convertire JSONArray in elenco con Gson?
  • NullPointerException in IthemeszedOverlay.getIndexToDraw
  • Android: Come interfacersi con Google Calendar?
  • Minuto = 20

    EDIT:

    Da ricorsivo non intendo che l'allarme sia impostato per domani e quindi in avanti, l'onReceive della mia class di allarme è chiamato ricorsivamente.

    Ho la seguente function per impostare e Allarme utilizzando i valori di cui sopra dal Database.

    public void SetAlarm(Context context){ retrieve(context); // returns the hour, minute and day value. Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); Calendar calendarNow = Calendar.getInstance(); calendarNow.setTimeInMillis(System.currentTimeMillis()); //Now calendar calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(timeOneHour)); calendar.set(Calendar.MINUTE,Integer.valueOf(timeOneMinute) ); calendar.set(Calendar.SECOND, 00); if(calendar.after(calendarNow)){ calendar.set(Calendar.DAY_OF_MONTH, (calendar.get(Calendar.DAY_OF_MONTH))); }else{ calendar.set(Calendar.DAY_OF_MONTH, (calendar.get(Calendar.DAY_OF_MONTH+1))); } AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent i = new Intent(context, NotificationsEngine.class); PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(), 1000*60*60*24, pi); } 

    Quello che voglio semplicemente è impostare un allarme per oggi se il tempo (10:20 – questo può essere modificato dall'utente, ma in questo momento sono in difficoltà con questa volta in particolare) non è passato – altrimenti impostare l'allarme per domani a lo stesso tempo.

    Prima di registrare questo allarme nella Mainactivity – che è l'inizio della mia applicazione (controlla se l'allarme è già impostato o no) in modo che non ripeto. Poi registro l'allarme ancora una volta dopo aver eseguito il mio codice in servizio che è invocato da questo allarme.

     @Override public void onReceive(Context context, Intent intent) { context.startService(new Intent(context, NotificationService.class)); } 

    nel Servizio (dopo aver eseguito il codice che intendo eseguire da questo allarme:

     notifEngine.SetAlarm(getApplicationContext()); 

    Questo problema non è accaduto fino al 2014. Presumo che il cambiamento dell'anno ha innescato qualcosa di brutto!

    Edit:

    Nel debug, le linee seguenti sembrano essere il colpevole:

     calendar.set(Calendar.DAY_OF_MONTH, (calendar.get(Calendar.DAY_OF_MONTH+1))); System.out.println("On Day"+calendar.get(Calendar.DAY_OF_MONTH)); 

    La System.out printing 2 alla console, che idealmente dovrebbe printingre 3 – potrei sbagliare qui, ma credo che qualcosa qui non va.

    Quindi penso di aver abbassato la questione:

     System.out.println("On Day before adding: "+calendar.get(Calendar.DAY_OF_MONTH)); calendar.set(Calendar.DAY_OF_MONTH, (calendar.get(Calendar.DAY_OF_MONTH+1))); System.out.println("On Day after adding: "+calendar.get(Calendar.DAY_OF_MONTH)); 

    Entrambi i comandi di printing sopra indicano un'output di 2.

  • LG G2 vs980 non riconosciuto dal command di dispositivi ADB (Win7 in virtualbox)
  • R non può essere risolto - errore Android
  • Come risolvere l'applicazione Android Phonegap SyntaxError: errore di parsing? (Problema dello schermo in bianco)
  • Come creare il carosello ViewPager?
  • Per iniziare con DropboxAPI, la class non è stata trovata
  • aprire la cartella di progetto da studio android?
  • L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.