Articles of alarmmanager

每天通知在某个时间

我想实现这一点: 第一次打开应用程序后,用户会收到通知,每天下午2点,如果某些条件是真的。 如果条件不成立,我们今天不会显示通知。 条件在下午2点检查,它从互联网下载一些数据。 到目前为止,我用AlarmManager和它的方法setRepeating()与24小时的时间间隔。 AlarmManager启动一个服务 。 在这项服务中,我正在下载数据,检查条件,如果是真的 – 显示通知 。 由于下载可以持续5秒以上,因此我已经为这个服务声明了android:process=":background" ,在单独的进程中运行它,而不会阻塞我的UI。 这种方法有两个缺点: 1:如果用户打开应用程序,比如下午4点(条件为真),他会立即收到通知。 来自setRepeating ()文档: 如果过去发生的时间,将立即触发警报,并根据过去的触发时间相对于重复间隔的距离来计算警报。 我想这个用户不会收到通知,这一天,只有第二天,等等。 2:我担心用户关机后不会显示通知。 从AlarmManager文档: 注册的警报在设备处于睡眠状态时保留(如果在此期间closures设备,可以select将设备唤醒),但是如果closures并重新引导,设备将被清除。 我不知道是否有可能使它一直工作。 如果你有任何想法如何使它更好,不客气。

android中的闹钟pipe理器

我创build了简单的闹钟应用程序。 它工作正常,但是,如果我手动更改设备的时间,那么我的报警不起作用…. 这是我的代码: Calendar = Calendar.getInstance(); //c.add(Calendar.DAY_OF_WEEK,1); c.set(Calendar.HOUR_OF_DAY,15); c.set(Calendar.MINUTE, 00); c.set(Calendar.SECOND, 00); c.set(Calendar.MILLISECOND, 0); Intent intent = new Intent(HomeActivity.this, MyAlarmService.class); pendingIntent = PendingIntent.getService(HomeActivity.this, 0, intent, 0); alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, c.getTimeInMillis(), pendingIntent); 有什么build议吗?

在Android 5.1中每秒调度一次闹钟

我想在我的应用程序中每秒运行一次报警服务。它在5.1版本以下工作正常。 但在5.1设备中不会触发。 我正在使用commonsware清醒的意图服务。logcat消息是说“ 可疑短间隔1000毫秒;扩展到60秒 ”。 我怎样才能轮询5.1的每一秒? 有人可以build议我怎么做到这一点? 更多的解释: 我的用例是我需要每隔30分钟进行一次操作。 AFAIK对于这个使用报警pipe理器是有效的方式,但在这里 1)我需要向用户显示倒数计时器。 (定时器任务,倒数计时器,ScheduledExecutorService对此非常有用) 2)即使应用程序在后台,我也需要每隔30分钟(通过通知)通知用户(警报服务就足够了) 但在这里,我的问题是当应用程序在后台,当你从最近刷出应用程序(即应用程序进程被终止)没有任何服务或定时器,处理程序,执行器服务将无法正常工作。 在这种情况下,如何在完成30分钟后通知用户。 如果我以错误的方式思考,请引导我。 谢谢, 切塔尼亚

Android开发人员 – 报警pipe理器与服务

我正在制作一个应用程序,即使应用程序closures,也需要每小时执行一次该function。 首先,我想创build一个服务,但在我的testing中,我意识到android有时会杀死我的服务。 所以我正在寻找另一个解决scheme,我发现AlarmManager。 我已经实现了,它似乎工作,但我有疑问,如果它会发生相同的服务或将永远运行? (直到重新启动手机…) 另外一个问题,有必要创build一个新的线程来执行这个进程,或者直接在其他线程中运行呢?

在特定的时间在Android设置每天重复报警

我正在使用闹钟pipe理器在特定的时间每天运行闹钟。 下面是代码 Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, 00); calendar.set(Calendar.MINUTE, 00); AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); Intent intent = new Intent(this, OnAlarmReceive.class); PendingIntent pendingIntent =PendingIntent.getBroadcast(this.getApplicationContext(), 0, intent,PendingIntent.FLAG_UPDATE_CURRENT); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, pendingIntent); 我每天早上12点设置闹钟。 以下是BroadCastReciever的代码 @Override public void onReceive(Context context, Intent intent) { System.out.println("Time is 12 Am"); Toast.makeText(context, "Alarm Triggered", Toast.LENGTH_LONG).show(); } 在这个代码中的问题是触发报警只要我运行应用程序无论何时。 任何帮助将不胜感激。 谢谢

如何在Android中使用AlarmManager开始一个Activity?

关于这个问题,我已经翻了十多篇教程和论坛的答案,但仍然没有能够得到一些有效的代码。 我会尽量保持这个问题简单明了: 你如何使用AlarmManager(在Android API中)在给定的时间启动一个活动? 任何解决这个问题的办法都可以。 我最近尝试做到这一点如下。 (导入省略,我希望MyActivity在程序打开3秒后启动,不会打开错误信息。) public class AndroidTest2Activity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Context context = this;//.getApplicationContext(); AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); // CORRECT Intent intent = new Intent(context, myReceiver.class); // CORRECT PendingIntent pending = PendingIntent.getBroadcast( context, 0, intent, […]

在S5 Neo的睡眠模式下AlarmManager不能正常工作

我正在使用服务中的AlarmManager每分钟触发一次。 PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 0, getUpdateServiceIntent(mContext), PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); // Cancel any pending Intent am.cancel(pendingIntent); // Set a new one am.set(AlarmManager.RTC_WAKEUP, 60000, pendingIntent); 在Samsung S5 Neo上:屏幕处于活动状态时,按预期工作。 屏幕closures时,每5分钟触发一次(而不是一次)。 我试着在S5 Mini(与Android 4.4),Nexus 5 5.1和Nexus 5 6.0上完全相同的代码,这段代码工作正常。 targetSdkVersion是19。 任何想法当屏幕closures时如何保持AlarmManager正常工作? 即使我要求30秒,延迟仍然是5分钟。 编辑:我也尝试了'setExact'方法,但它没有改变任何东西。 每个闹钟之间还有5分钟的时间间隔。

Job Scheduler与后台服务

我有一个应用程序,它具有每分钟应该在后台运行的functionA. functionA是应用程序应该连接到数据库,读取一些数据,然后获取设备的当前位置,并根据它们检查条件,如果条件为真,则应该向用户发送状态栏通知,以便当用户点击通知应用程序的用户界面将显示,并发生一些事情。 这个后台任务应该每分钟运行一次,无论应用程序是否被使用,closures,终止(就像facebook或Whatsapp向我们显示通知,无论他们是否在应用程序堆栈中)。 现在我已经search并发现Android提供了Job Scheduler , Background Service , AlarmManager和Handlers 。 但是,我越读到他们,这些陈述就越是矛盾。 1.关于处理程序我已经读过,它们不存在长时间的延迟,并将在系统重新启动后终止。 所以他们不适合我的任务。 2.但AlarmManager似乎是一个很好的候选人的问题,因为如果允许他们存在,即使系统重新启动,并可以重新运行应用程序。 但在Android文档中,警报pipe理器旨在用于必须在特定时间运行的任务(如闹钟)。 但我的任务必须每分钟运行一次。 3.然后是后台服务。 这是更多的任务,像我已经阅读的背景下载,并不打算做我已经解释的东西。 4. JobScheduler似乎不是一个需要永久完成的任务,而是完成特定约束的任务,比如空闲或者没有networking。 那么,这些(或者其他的,如果存在的话)是否推荐用于我在第一部分中解释的任务

在Android的每个星期一重复报警使用AlarmManager / BroadcastReceiver

我想在每个星期一上午09:00和下午05:00重复我的任务。 我用了下面的代码,但是我不能重复这个任务。 活动代码: – public class AndroidScheduledActivity extends Activity { /** Called when the activity is first created. */ int id = 115; Intent myIntent; PendingIntent pendingIntent; AlarmManager alarmManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button buttonStart = (Button)findViewById(R.id.start); myIntent = new Intent(getBaseContext(), MyScheduledReceiver.class); myIntent.putExtra("id", id); pendingIntent = PendingIntent.getBroadcast(getBaseContext(), id, myIntent, 0); alarmManager […]

Android 6.0打盹模式下的闹铃pipe理器问题

我制作了一个应用程序,一直运行到Android 6.0。 我认为这是Dozefunction,它不允许我的闹钟触发。 我使用sharedpreferences来处理选项: //ENABLE NIGHT MODE TIMER int sHour = blockerTimerPreferences.getInt("sHour", 00); int sMinute = blockerTimerPreferences.getInt("sMinute", 00); Calendar sTime = Calendar.getInstance(); sTime.set(Calendar.HOUR_OF_DAY, sHour); sTime.set(Calendar.MINUTE, sMinute); Intent enableTimer = new Intent(context, CallReceiver.class); enableTimer.putExtra("activate", true); PendingIntent startingTimer = PendingIntent.getBroadcast(context, 11002233, enableTimer, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager sAlarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); sAlarm.setRepeating(AlarmManager.RTC_WAKEUP, sTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, startingTimer); 任何线索最新错误在这里? 这是一个阻止通话的应用程序。 谢谢! 编辑:我有3个文件(更多,但…)像: MainActivity […]