【问题标题】:Background repeating task with onboot使用 onboot 进行后台重复任务
【发布时间】:2016-07-23 12:22:03
【问题描述】:

您好,我想创建一个后台服务来更新我的应用程序的数据并每天重复一次,我也希望该服务在启动时启动。我有以下代码:

public class OnBoot extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // Create Intent
        context.startService(new Intent(context, BackgroundServiceHandler.class));
    }

}

我有一个设置菜单,因此用户可以选择重复闹钟的时间。 如何重置闹钟管理器的时间?我必须把警报管理器的代码放在哪里?我必须使用服务还是意图服务?如何检查服务是否正在运行?

报警管理器代码:

    Intent intent = new Intent(MainActivity.this, AlarmService.class);
    intent.putExtra("i", 3);
    PendingIntent pi = PendingIntent.getService(MainActivity.this, 9, intent, 0);

    // every day at 9 am
    Calendar calendar = Calendar.getInstance();

    // if it's after or equal 9 am schedule for next day
    if (Calendar.getInstance().get(Calendar.HOUR_OF_DAY) >= 9) {
        calendar.add(Calendar.DAY_OF_YEAR, 1); // add, not set!
    }
    calendar.set(Calendar.HOUR_OF_DAY, 9);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

    alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(),
            AlarmManager.INTERVAL_DAY, pi);

【问题讨论】:

    标签: android service alarmmanager


    【解决方案1】:
    • 如何重置闹钟管理器的时间?

    How to edit/reset Alarm Manager?

    • 我必须把警报管理器的代码放在哪里?

    例如,您可以将该代码放在静态方法中,并从用户设置时间的位置和OnBootReceiver 调用它。如何实现将接收事件OnBoot的类请检查answer

    • 我必须使用服务还是意图服务?

    Service vs IntentService

    • 如何检查服务是否正在运行?

    Check if service is running on Android?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多