在Android中每小时设置重复的警报管理器

编程入门 行业动态 更新时间:2024-10-28 06:33:02
本文介绍了在Android中每小时设置重复的警报管理器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我想每小时在android中获取位置。为此,我使用警报管理器并设置每小时重复警报,只想在修复时间之后即8 AM和12 PM写入文件。 我在设置警报管理器时遇到问题,虽然我每隔一小时设置一次,但它在1/2小时内执行。

I want to fetch location every hours in android . For that i use alarm manager and set repeated alarm for every hour and just want to write into file after fix time i.e at 8 AM and 12 PM . I got a problem in setting alarm manager , while i set for every one hour but it execute in 1/2 hour .

on button click i start service : serviceButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent myIntent = new Intent(AutoMainActivity.this, TrackerService.class); pendingIntent = PendingIntent.getService(AutoMainActivity.this, 0, myIntent, 0); AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, ALARM_TRIGGER_AT_TIME, 3600000, pendingIntent); //3600000 1hrs finish(); } });

服务等级如下:

Tracker Service.class String FINAL_STRING; SharedPreferences pref; static final int START_TIME = 8; static final int MID_TIME = 12; java.util.Date systemDates = Calendar.getInstance().getTime(); int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); if(hour == START_TIME) { edit.putString("smsdata", FINAL_STRING); editmit(); //sendSms(START_TAG+pref.getString("smsdata", "")); edit.putString("smsdata", ""); editmit(); }else { System.out.println("currentdate:"+simpleDateFormat.toString()); System.out.println("current_time:"+currentTime); Editor edit = pref.edit(); edit.putString("smsdata", pref.getString("smsdata", "")+FINAL_STRING+"#"); editmit(); if(hour==MID_TIME) { //sendSms(START_TAG+pref.getString("smsdata", "")); generateNoteOnSD("\n"+START_TAG+pref.getString("smsdata", "")); edit.putString("smsdata", ""); editmit(); System.out.println("mid time"); } }

我执行时该服务每30分钟启动一次。但是我想每60分钟一次。

When i execute this the service start on every 30min. but i want on every 60min.

推荐答案

setInexactRepeating()是其无法按预期工作的原因。尝试以下操作:

setInexactRepeating() is the reason why it is not working as you expected. Try following:

AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); am.setRepeating(AlarmManager.RTC_WAKEUP, firstStart, interval, pendingIntent );

更多推荐

在Android中每小时设置重复的警报管理器

本文发布于:2023-11-27 02:04:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1636118.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:管理器   警报   每小时   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!