简体   繁体   中英

AlarmManager fire one time firstly but then fire repeatedly in every second… why?

I am using a offline task for that I have to call Webservice in backgourd in every 5 mintus. So I am using AlarmManager for it.

First time AlarmManager fire onTime(after 5 min of start), but after than it fire in evry seconds, i don't know why?

I want fire AlarmManager in every 5 min only...

Please help..

This is the code for start timer..

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());
}

And this is the BroadcastReceiver where I am doing my task for call Webservices .

I have also added code for start AlarmManager in BroadcastReceiver for start AlarmManager again for next 5 min.(If am wrong for that please correct me.)

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());
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM