Android AlarmManager先发射一次,然后每秒重复发射。。。。。为什么?

Android AlarmManager先发射一次,然后每秒重复发射。。。。。为什么?,android,broadcastreceiver,alarmmanager,Android,Broadcastreceiver,Alarmmanager,我正在使用一个离线任务,因此我必须每隔5分钟在Backgord中调用Webservice。因此,我使用了AlarmManager 第一次AlarmManagerOn time(启动5分钟后)启动,但启动后每几秒钟就会启动一次,我不知道为什么 我只想让火警经理每5分钟 请帮忙 这是启动计时器的代码 public void startOfflineDateAlarm() { //* For Start Offline Sync Timer*// Intent intentAlarm

我正在使用一个离线任务,因此我必须每隔5分钟在Backgord中调用
Webservice
。因此,我使用了
AlarmManager

第一次
AlarmManager
On time(启动5分钟后)启动,但启动后每几秒钟就会启动一次,我不知道为什么

我只想让火警经理每5分钟

请帮忙

这是启动计时器的代码

public void startOfflineDateAlarm() {

    //* For Start Offline Sync Timer*//
    Intent intentAlarm = new Intent(this, AlarmReceiver.class);
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, Constant.offlineDataAlarmTime,
            PendingIntent.getBroadcast(this, 1, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT));
    Log.e(TAG, "ALARM START");

    saveOfflineTables(getApplicationContext());
}
这是
BroadcastReceiver
,我在这里执行调用
Webservices
的任务

我还在
BroadcastReceiver
中添加了启动
AlarmManager
的代码,以便在接下来的5分钟内再次启动AlarmManager。(如果我在这方面出错,请纠正我。)


您需要使用“重复报警”来引用此内容。请不要只是将代码转储为答案,还要包括一个解释。@Jaspreet Kaur,我必须在开始时间或AlarmReceiver中用代码替换此内容,或者两者兼而有之?我只需在阅读他的问题后写出所需的答案。并在答案中写下评论。inside startoffiredatealarm方法。您没有设置重复报警。@Jaspreet Kaur,我在成功登录后的登录活动中使用此方法(StartOfflineDataAlarm),但在登录此活动后,我使用finish进行此操作,因此,如果确定,我只需在此方法中进行更改。
public class AlarmReceiver extends BroadcastReceiver {

    String TAG = "AlarmReceiver";
    public static PendingIntent pendingIntent;
    public static AlarmManager alarmManager;

    @Override
    public void onReceive(Context context, Intent intent) {

        Log.e(TAG, "ALARM CLICKED");

        //* For Start Offline Sync Timer*//
        Intent intentAlarm = new Intent(context, AlarmReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(context,1,  intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT);
        alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP,Constant.offlineDataAlarmTime, pendingIntent);


        saveOfflineTables(context);
        syncOfflineDataWithServer(context);
    }

    private void saveOfflineTables(Context context) {

        SharedPreferences sharedPreferences = context.getSharedPreferences("SFAData", MODE_PRIVATE);
        String screenCheck = sharedPreferences.getString("CheckScreen", "");
        String userId = sharedPreferences.getString("id", Constant.DEFAULT);
        String storeCode = sharedPreferences.getString("store_code", DEFAULT);
        String storeId = sharedPreferences.getString("store_ID", DEFAULT);

        Log.e(TAG, "saveOfflineTables");
        OfflineDataSave.saveItemList(context, userId);
        OfflineDataSave.savePromotionList(context, storeId);
        OfflineDataSave.saveSubCategoryList(context,userId);
        OfflineDataSave.saveSubSubCategoryList(context,userId);
        OfflineDataSave.saveDistributorList(context, userId);
        OfflineDataSave.saveStoreList(context, userId);
        OfflineDataSave.saveBAList(context, userId);
        OfflineDataSave.saveCustomerList(context, userId);
        OfflineDataSave.saveDailyTask(context, userId);

        OfflineDataSave.saveTargetVsAchievement(context, userId);
    }

    private void syncOfflineDataWithServer(Context context){

        DataSyncWithServer.syncAttendance(context);
        DataSyncWithServer.syncCounterHygiene(context);
        DataSyncWithServer.syncCompetition(context);
        DataSyncWithServer.syncCustomerRegistration(context);
        DataSyncWithServer.syncMakeOver(context);
        DataSyncWithServer.syncCustomerFeedback(context);
        DataSyncWithServer.syncTrackingData(context);
        DataSyncWithServer.syncSalesInvoice(context);
        DataSyncWithServer.syncSalesReturnInvoice(context);
        DataSyncWithServer.syncPurchaseReturnInvoice(context);
        DataSyncWithServer.syncStockTakeInvoice(context);
        DataSyncWithServer.syncOrderManagementInvoice(context);
        DataSyncWithServer.syncTesterManagementInvoice(context);
    }
}
  public void startOfflineDateAlarm() {

  //* For Start Offline Sync Timer*//
        Intent intentAlarm = new Intent(this, AlarmReceiver.class);
        AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        /*alarmManager.set(AlarmManager.RTC_WAKEUP, Constant.offlineDataAlarmTime,
            PendingIntent.getBroadcast(this, 1, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT));
         */

        Log.e(TAG, "ALARM START");
        long firstRunTime = calendar.getTimeInMillis();
        long futureInMillis = 5 * 60 * 1000;  //Repeat after 5 min
        alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,
                firstRunTime,
                futureInMillis,
                intentAlarm);
        saveOfflineTables(getApplicationContext());
}