У меня есть BroadcastReceiver, начиная службу. В этой службе у меня есть AlarmManager, я хочу запускать другую услугу в определенное время суток, каждый день.Android: Запуск службы в выбранное время
BroadcastReceiver запускается, когда я открываю приложение, но AlarmManager начинает свою службу только в том случае, если я запускаю BroadCastReceiver в установленное время.
Как заставить его постоянно сравнивать текущее время с заданным временем, чтобы оно автоматически запускалось, когда время было правильным?
В MainActivity.java
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent();
intent.setAction("com.example.BroadcastPro.MyBroadcastReceiver");
sendBroadcast(intent);
}
В myBroadcastReceiver.java
public class MyBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Intent i=new Intent(context,SetPeriodicService.class);
context.startService(i);
}
}
В SetPeriodicService.java
public int onStartCommand(Intent intent, int flags, int startId)
{
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 12);
calendar.set(Calendar.MINUTE, 30);
Intent i=new Intent(this,MyService.class);
PendingIntent alarmIntent = PendingIntent.getService(this, 0, i, 0);
AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmManager.INTERVAL_DAY, alarmIntent);
return super.onStartCommand(intent, flags, startId);
}
Ваш вопрос еще не совсем понятен: «MyService» не запускается по расписанию, если запущен «SetPeriodicService»? Не можете ли вы просто запустить новую услугу в нужное время, отправив задержанную версию из старой службы? – Price
@ user87049 Нет, MyService не запускается, если я не запустил приложение точно в установленное время. – stremilie