Как запустить фоновую службу в Android в определенное время?

Я знаю, как запустить фоновую службу в Android даже в определенное время. Я использовал AlarmManager для достижения этой цели, но я хочу запускать эту службу ежедневно в это время.

Предположим, я хочу запустить его в 12 часов, но после этого служба должна продолжаться. Я также использовал метод stopitself(), но он не работает.

Вот мой код:

void alram(Context ctx){

    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(System.currentTimeMillis());
    cal.set(Calendar.HOUR_OF_DAY, 12);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.AM_PM,Calendar.AM);

    Intent serviceIntent = new Intent(ctx, ServiceClass.class);
    PendingIntent servicePendingIntent =
        PendingIntent.getService(ctx,Service_Apps.SERVICE_ID,serviceIntent,0);

    AlarmManager alarm = (AlarmManager) ctx
        .getSystemService(Context.ALARM_SERVICE);
    alarm.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),servicePendingIntent);
    alarm.setRepeating(
        AlarmManager.RTC_WAKEUP,
        cal.getTimeInMillis(),
        AlarmManager.INTERVAL_DAY,
        servicePendingIntent
    );
}

person Anshul Singh    schedule 10.11.2017    source источник
comment
посмотрите stackoverflow.com/questions/8321443/   -  person Hemant Parmar    schedule 10.11.2017
comment
@Channa, нет, это не дублирование, мы можем начать обслуживание в определенное время, но я ищу ежедневную.   -  person Abhishek    schedule 10.11.2017
comment
Что вы можете сделать, так это запланировать новый .setExact (..) на следующий день, когда вы выполните старый. Так что ваше намерение будет работать + график.   -  person Tomas Ivan    schedule 10.11.2017


Ответы (1)


Привет, пожалуйста, используйте этот код, он поможет исполнить ваши желания.

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 12); 
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
PendingIntent pi = PendingIntent.getService(this, 0,
        new Intent(this, Service_Apps.class),PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
        AlarmManager.INTERVAL_DAY, pi);
person Abhishek    schedule 23.11.2017