Lal*_*ani 5 android android-widget android-intent
我想以某种regular
间隔向服务器发送数据.所以,我也在使用AlarmManager
它.它工作正常,但问题是,当我改变cancel
报警Date/Time
.在得到再次取消之前那段时间的火警,这样就使得我的应用程序变得更坏,在extra
数据发送到server
与irregular
间隔.
这是我的BroadCastReceiver
班级AlarmManager
.
public class MyReceiver extends BroadcastReceiver{
AlarmManager mgr;
PendingIntent pi;
Intent intent;
public static boolean flag = false;
@Override
public void onReceive(final Context arg0, Intent arg1) {
if(arg1.getAction().equals("android.intent.action.TIME_SET")){
Log.d("MyReceiver", "Time set");
mgr = (AlarmManager) arg0.getSystemService(Context.ALARM_SERVICE);
intent = new Intent(arg0, TestService.class);
intent.putExtra("test", "testvalue");
pi = PendingIntent.getService(arg0, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
if(!flag){
mgr.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 10000, 5000, pi);
flag = true;
}
else{
mgr.cancel(pi);
pi.cancel();
flag = false;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
下面是带有Logcat输出的屏幕截图,它解释了在取消警报后,它会在取消后再次触发.
正如您在Logcat
输出black arrow
中看到的那样,我在那里更改了取消闹钟的时间,并red arrow
显示在取消闹钟之后再次取消它就在取消之前触发,这不应该发生.所以,任何人都可以给出我的想法为什么会发生这种情况,我该怎么办才能restrict
在取消之前再次触发警报.
注意: - 只有在我尝试从10:00到11:00增加日期/时间时才会发生这种情况,当我减少10:00到9:00的时间时工作正常.
小智 0
我无法看到 LogCat,但查看代码,我不确定被调用的服务(TestService)是如何被杀死/停止的?我认为你需要以某种方式阻止它。此外,不建议在广播接收器中执行长时间运行的任务。您是否已验证在 mgr.cancel(pi) 被触发后是否发生了服务停止事件?
归档时间: |
|
查看次数: |
1864 次 |
最近记录: |