2011-12-28 22 views
14

Tengo un problema en la notificación de la barra de estado en un intervalo de 10 segundos. He hecho con el código para mostrarlo una vez creando un complemento.Pero quiero mostrarlo en intervalos de 10 minutos.Así que Usó AlarmManager para generar notificaciones cada 10 minutos. Pero no llama al método onReceive(Context ctx, Intent intent) de la clase FirstQuoteAlarm. Tengo el siguiente código para la notificación de visualización y AlarmManager.notificación de barra de estado en el teléfono Android

public void showNotification(CharSequence contentTitle, CharSequence contentText) { 
    int icon = R.drawable.nofication; 
    long when = System.currentTimeMillis(); 

    Notification notification = new Notification(icon, contentTitle, when); 

    Intent notificationIntent = new Intent(ctx, ctx.getClass()); 
    PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0, notificationIntent, 0); 
    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 

    mNotificationManager.notify(1, notification); 

     Date dt = new Date(); 
     Date newdate = new Date(dt.getYear(), dt.getMonth(), dt.getDate(),10,14,dt.getSeconds()); 
     long triggerAtTime = newdate.getTime(); 
     long repeat_alarm_every = 1000; 
     QuotesSetting.ON = 1; 

     AlarmManager am = (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE); 
     //Intent intent = new Intent("REFRESH_ALARM"); 
     Intent intent1 = new Intent(ctx,FirstQuoteAlarm.class); 
     PendingIntent pi = PendingIntent.getBroadcast(ctx, 0, intent1, 0); 
     am.setRepeating(AlarmManager.RTC_WAKEUP, triggerAtTime, repeat_alarm_every, pi); 
     Log.i("call2","msg"); 


} 
+0

¿por qué se actualizar cada 10 minutos? esto es bastante hostil con la batería – Dediqated

Respuesta

0

Use ScheduledExecutorService. Eso generalmente da mejores resultados.

Está destinado a repetir acciones en el fondo cada dos minutos. Comience con retraso y mucho más. Salida: http://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService.html

Aquí es una clase con un método que establece una ScheduledExecutorService para que suene cada diez segundos durante una hora:

import static java.util.concurrent.TimeUnit.*; 
class BeeperControl { 
private final ScheduledExecutorService scheduler = 
Executors.newScheduledThreadPool(1); 

public void beepForAnHour() { 
final Runnable beeper = new Runnable() { 
    public void run() { System.out.println("beep"); 
}; 
final ScheduledFuture beeperHandle = 
    scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS); 
scheduler.schedule(new Runnable() { 
    public void run() { beeperHandle.cancel(true); } 
}, 60 * 60, SECONDS); 
} 
}} 
1

que puedes usar diferentes ID de notificación de la siguiente código que utilizó

mNotificationManager.notify(i, notification); 

Y también aumentar su tiempo cuando

Notification notification = new Notification(icon, contentTitle, when); 
Cuestiones relacionadas