[英]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. 我正在使用一个离线任务,因为我必须每5分钟调用backgourd中的
Webservice
。 So I am using AlarmManager
for it. 所以我正在使用
AlarmManager
。
First time AlarmManager
fire onTime(after 5 min of start), but after than it fire in evry seconds, i don't know why? 第一次
AlarmManager
触发onTime(开始5分钟后),但之后却在每秒钟触发一次,我不知道为什么?
I want fire AlarmManager in every 5 min only... 我只希望每5分钟触发一次AlarmManager ...
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
. 这就是
BroadcastReceiver
,我将在其中执行呼叫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.) 我还添加了用于在
BroadcastReceiver
中启动AlarmManager的代码, AlarmManager
在接下来的5分钟内再次启动AlarmManager。(如果这样做有误,请更正我。)
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());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.