我正在使用警报管理器调用 REST API。但问题是当用户更改系统时钟时间时它会立即触发。必须在上午 9:00 准确调用 REST API。假设用户在上午 8:00 更改时钟,并且闹钟在上午 10:00 触发,因此会导致问题。我使用 PHP-MySQL 作为后端。
你也可以说我的闹钟不必依赖于Android系统时间。它必须取决于印度标准时间。
应在上午 9:00 除外调用 REST API
后端 PHP
REST 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;
}
largeQ