2011-12-28 3 views
14

У меня проблема с уведомлением в строке состояния с интервалом в 10 секунд. Я сделал с кодом для отображения его один раз, создав плагин. Но я хочу отображать его каждые 10 минут. Так что я использовал AlarmManager для генерации уведомления каждые 10 минут. Но он не вызывает onReceive(Context ctx, Intent intent) метод FirstQuoteAlarm класс. У меня есть следующий код для отображения уведомлений и AlarmManager.уведомление о статусе в телефоне телефона 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

Почему бы вам обновлять каждые 10 минут? это довольно недружелюбно – Dediqated

ответ

0

Использование ScheduledExecutorService. Это обычно дает лучшие результаты.

Он предназначен для повторения действий в фоновом режиме каждый такой-то и так минут. Начните с задержки и многое другое. Проверьте: http://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService.html

Вот класс с методом, который устанавливает ScheduledExecutorService звуковой сигнал через каждые десять секунд в течение часа:

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

Вы должны использовать различные уведомления идентификатор, как показано ниже код, который вы использовали

mNotificationManager.notify(i, notification); 

А также увеличить время когда

Notification notification = new Notification(icon, contentTitle, when); 
Смежные вопросы