2013-12-13 3 views
0

Почему мое уведомление иногда не отображается?Иногда мое уведомление не отображается

Я создаю setRecurringAlarm(this); в MainActivity, и я хотел бы использовать этот код, чтобы показывать предупреждение каждые 30 минут

Это мой код:

private void setRecurringAlarm(Context context) { 
    Log.d("MyService", "setRecurringAlarm() activated..."); 
     Calendar updateTime = Calendar.getInstance(); 
     updateTime.setTimeZone(TimeZone.getDefault()); 
     updateTime.set(Calendar.HOUR_OF_DAY, 12); 
     updateTime.set(Calendar.MINUTE, 30); 
     Intent downloader = new Intent(context, MyStartServiceReceiver.class); 
     downloader.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, downloader, PendingIntent.FLAG_CANCEL_CURRENT); 
     AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, updateTime.getTimeInMillis(), AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent); 
    } 

И это мой MyStartServiceReceiver:

public class MyStartServiceReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
     Intent dailyUpdater = new Intent(context, MyService.class); 
     context.startService(dailyUpdater); 
     Log.d("AlarmReceiver", "Called context.startService from AlarmReceiver.onReceive"); 
     } 
    } 

Это мой MyService:

public class MyService extends IntentService { 
    public MyService() { 
     super("MyServiceName"); 
    } 
    @Override 
    protected void onHandleIntent(Intent intent) { 
     Log.d("MyService", "Execute MyTask"); 
     new MyTask().execute(); 
     this.sendNotification(this); 
    } 
    private class MyTask extends AsyncTask<String, Void, Boolean> { 
     @Override 
     protected Boolean doInBackground(String... strings) { 
       Log.d("MyService", "Calling doInBackground() in MyTask"); 
       return false; 
     } 
    }   
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN) 
    private void sendNotification(Context context) { 
     Log.d("MyService", "Execute sendNotification()"); 
     // here is my notification code --> http://stackoverflow.com/questions/20558619/how-to-set-notification-to-clear-itself-on-click 

    } 
} 

ответ

1

Вы не используете wakelock в своем IntentService. Нет никакой гарантии, что ваш телефон будет бодрствовать, потому что BroadcastReciever вернется немедленно. Вы должны иметь в своем wakelock IntentService

Проверьте это

AlarmManager.setRepeating - Service does not seem to repeat

+0

Большое вам спасибо @MadhurAhuja :) – user2790880

 Смежные вопросы

  • Нет связанных вопросов^_^