Tag: alarmmanager

alarmmanager的setExactAndAllowWhileIdle()无法正常工作

我正在开发一个应用程序,需要对用户设置的确切时间执行特定操作。 为此,我使用setExactAndAllowWhileIdle()方法,因为该文档说具有android 6.0或更高版本的android设备具有打盹模式概念,其中如果设备保持空闲一段时间,则它将进入打盹模式并且打盹模式限制警报。 如果我想在设备处于打盹模式时触发警报,那么我有setExactAndAllowWhileIdle()方法,如文档所述。 本文档还包含将设备输入打盹模式以进行测试的手动方式。 所以,我正在测试使用这种方式但是当设备进入打盹模式时我的警报没有被触发,当我通过终端命令停止打盹模式时,我的过去警报将立即触发。 所以,我的问题是setExactAndAllowWhileIdle()这个方法在打盹模式下不起作用,但它必须像文档中所说的那样工作。 我知道这种方法的局限性,我每9分钟只能发出一次警报,而且我遵守这条规则。 所以,我无法理解问题出在哪里。 我的代码: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC, d.getTime(), pendingIntent); else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) alarmManager.setExact(AlarmManager.RTC, d.getTime(), pendingIntent); else alarmManager.set(AlarmManager.RTC, d.getTime(), pendingIntent); 这是一个方法问题还是我以错误的方式做到了?

奇怪的AlarmManager行为

我有2个BroadcastReceivers和2个意图,我想点击一个按钮,5米后开始播放1和10米后开始播放2,发生的事情是他们都在我点击后10米开始,我的猜测是,意图不是唯一的,但我是为每个人设置不同的reqeustCode。 按钮的OnClick: Bundle bd = new Bundle(); bd.putInt(“mInt”, i); Intent intent1 = new Intent(getActivity(), Broadcast_1.class); intent1.putExtras(bd); PendingIntent pendingIntent1 = PendingIntent.getBroadcast(getActivity().getApplicationContext(), i, intent1, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager1 = (AlarmManager) getActivity().getApplicationContext().getSystemService(Context.ALARM_SERVICE); alarmManager1.setRepeating(AlarmManager.RTC, System.currentTimeMillis()+1000*60*5, 1000*60*10, pendingIntent1); Toast.makeText(getActivity(), “countdown started “+i ,Toast.LENGTH_SHORT).show(); Intent intent2 = new Intent(getActivity(), Broadcast_1.class); intent2.putExtras(bd); PendingIntent pendingIntent2 = PendingIntent.getBroadcast(getActivity().getApplicationContext(), i+42212342, intent2, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager2 = (AlarmManager) […]

经过一段时间后重复运行方法的服务

我想创建一个服务,一次又一次地在10秒后运行一个方法,直到我停止它,即使该应用程序已关闭。 我的尝试代码如下 package com.example.tauben; import java.util.Timer; import java.util.TimerTask; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.widget.Toast; public class Reminder extends Service { @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { TimerTask task = new TimerTask() { public void run(){ f(); } }; Timer timer = new Timer(); timer.scheduleAtFixedRate(task, 0, […]

AlarmManager setInexactRepeating,setWindow,setRepeating方法在工作日内从循环内调用时不会触发警报

要求: – 我需要在一周的特定日期和警报开始的日期发出警报(例如我想在2017年5月26日下午6:45开始的每周的周五和周六发出警报) 问题:- 当从循环内调用AlarmManager setInexactRepeating , setWindow或setRepeating方法时,BroadcastReceiver的onReceive()方法不会执行。 用于此任务的代码如下: – AndroidManifest.xml中 <!– –> ActivitySaveReminder.java public class ActivitySaveReminder extends AppCompatActivity{ onCreate() { fireAlarmOnWeekDays(); } public void fireAlarmOnWeekDays() { long[] weekDaysMillisecondsArr = {1495737000000l, 1495823400000l}; long[] alarmStartMillisArr = {1495801680000l}; Calendar calendar = Calendar.getInstance(); for (int i = 0; i > selected day time stamp –> “+calendar.getTime()); for (int […]