2013-01-13 71 views
0

我创建了启动报警如下图所示如何停止报警管理器?

public class MyScheduleReceiver extends BroadcastReceiver { 

    // Restart service every 30 seconds 
private static final long REPEAT_TIME = 1000 * 5; 

@Override 
public void onReceive(Context context, Intent intent) { 
    AlarmManager service = (AlarmManager) context 
    .getSystemService(Context.ALARM_SERVICE); 
Intent i = new Intent(context, MyStartServiceReceiver.class); 
PendingIntent pending = PendingIntent.getBroadcast(context, 0, i, 
    PendingIntent.FLAG_CANCEL_CURRENT); 
Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.SECOND, 5); 
service.setInexactRepeating(AlarmManager.RTC_WAKEUP, 
    cal.getTimeInMillis(), REPEAT_TIME, pending); 

我这个箱子的停止报警,我把它从主activity.Manifest我认为是好的...工作重复,但没有停止!

 public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.setup); 

    sendBroadcast(new Intent(this,MyScheduleReceiver.class)); 

} 

public void StopRepeat(View view) { 

    sendBroadcast(new Intent(this,MyStopReceiver.class)); 

} 

public class MyStartServiceReceiver extends BroadcastReceiver { 


public void onReceive(Context context, Intent intent) { 

    Toast.makeText(context, "Repeat service!.", 
      Toast.LENGTH_LONG).show(); 
    } 

    public class MyStopReceiver extends BroadcastReceiver { 

    // Restart service every 30 seconds 
    private static final long REPEAT_TIME = 1000 * 5; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    AlarmManager service = (AlarmManager) context 
     .getSystemService(Context.ALARM_SERVICE); 
    Intent istop = new Intent(context, MyStartServiceReceiver.class); 
    PendingIntent pending = PendingIntent.getBroadcast(context, 0, istop, 
     PendingIntent.FLAG_CANCEL_CURRENT); 
    Calendar cal = Calendar.getInstance(); 
    cal.add(Calendar.SECOND, 5); 

     service.cancel(pending); 

但服务没有停止。什么可能是这个问题?谢谢。

+0

您可以重新启动设备。 (除非你已经创建了'BOOT_COMPLETE' BroadcastReceiver,但你也可以禁用它。) – Sam

+0

已将你的放入清单文件 –

+0

是的,我已经启动完成了。 ... – user1950855

回答

0

最简单的选项是重新启动您的设备。 (如果你创建了一个BOOT_COMPLETED监听器只是将其删除现在。)

您还可以通过传递您用于创建报警AlarmManager#cancel()该取消的PendingIntent报警。您已经编写了代码来执行此操作,但是您是否有一个Button,其属性为android:onClick="StopRepeat"setup.xml?你点了吗?


解决方案
我们最终发现了你在你的清单文件有一个错误,所以MyStopServiceReceiver从来没有叫......

+0

是的,我有按钮停止...我让重新启动,删除启动完成...但没有...不停止重复! – user1950855

+0

只有重启设备...停止! – user1950855

+0

好,您可能在多个地方启动了闹钟......您是否在MyScheduleReceiver中发出闹钟? – Sam