为了账号安全,请及时绑定邮箱和手机立即绑定

Android (JAVA) - 每天上午 9:00 在特定时间调用 REST API

Android (JAVA) - 每天上午 9:00 在特定时间调用 REST API

PHP
30秒到达战场 2023-07-15 18:36:44
我正在使用警报管理器调用 REST API。但问题是当用户更改系统时钟时间时它会立即触发。必须在上午 9:00 准确调用 REST API。假设用户在上午 8:00 更改时钟,并且闹钟在上午 10:00 触发,因此会导致问题。我使用 PHP-MySQL 作为后端。你也可以说我的闹钟不必依赖于Android系统时间。它必须取决于印度标准时间。应在上午 9:00 除外调用 REST API后端 PHPREST API 恰好在上午 9:00 调用。当用户更改系统时钟时间时,警报管理器会立即触发。设置报警方式   public static void setAlarm(Context context) {    Intent intent = new Intent(context, MyBroadcastReceiver.class);    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 234324243, intent, 0);    AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);    Calendar calendar = Calendar.getInstance();    calendar.setTimeInMillis(System.currentTimeMillis());    calendar.set(Calendar.HOUR_OF_DAY, 9);    calendar.set(Calendar.MINUTE, 0);    calendar.set(Calendar.SECOND, 0);    if (calendar.before(Calendar.getInstance())) {        calendar.add(Calendar.DATE, 1);    }    alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);  }BroadcastReceiver.java      public class MyBroadcastReceiver extends BroadcastReceiver {      @Override      public void onReceive(Context context, Intent intent) {        if (isNetworkConnected(context)) {           doUpdate(context);        }      }    private void doUpdate(final Context context) {    class DoInsert extends AsyncTask<String, String, String> {        @Override        protected String doInBackground(String... strings) {            Retrofit retrofit = AppConfig.getRetrofit();            Api service = retrofit.create(Api.class);            Call<Response> call = service.doOperation();            call.enqueue(new Callback<Response>() {                @Override                public void onResponse(Call<Response> call, retrofit2.Response<Response> response) {                    Response response1 = response.body();                    Log.d("RESPONSE ======== ", response1.getMessage());                    return;                }
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

经过很多临时技巧后,我找到了解决方案。

警报管理器将占用系统时间,为了避免它,我们可以使用 UTC 时间,但我不知道如何使用它。

所以,我通过在php中使用Cron Job解决了这个问题。Web 托管提供了 Cron 作业,它实际上适合这种情况,因为授予用户修改 REST API 的权限是相当危险的。

最后感谢所有花时间回答我的问题的人。


查看完整回答
反对 回复 2023-07-15
  • 1 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信