【发布时间】:2019-09-17 13:14:36
【问题描述】:
我正在尝试在Handler 中实现某种类型的函数调用,以便多次调用函数。为此,我使用Alarm Manager 来启动Handler。我成功地做到了。
问题在于,当 AlarmManager 在特定时间后重复时,还会再次创建一个新的句柄,而前一个句柄仍然存在。
我只想要一个处理程序,无论 AlarmManger 重复多少次,它都会被创建和调用。
这是我的闹钟管理器
AlarmManager am =( AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, MyBroadcastReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),1000*1, pi);
这是我的班级,我在哪里调用 Handler
public class MyBroadcastReceiver extends BroadcastReceiver implements VolleyJsonRespondsListener {
final int delay = 10000; //milliseconds
final Handler handler = new Handler();
Runnable runnable;
@Override
public void onReceive(final Context context, Intent intent) {
Log.e("timeOut", "@"+CommonFunctions.getTime(System.currentTimeMillis()));
runnable=new Runnable() {
@Override
public void run() {
//do something
Log.e("timeInside", "@"+CommonFunctions.getTime(System.currentTimeMillis()));
handler.postDelayed(this, delay);
}
};
handler.postDelayed(runnable, delay);
}
在 Logcat 中,您可以看到多个处理程序的值相互冲突。我在日志中实现了系统时间并在 Logcat 中显示。
定位
【问题讨论】:
标签: android alarmmanager handle