我最初通过代码在我的主要活动中注册了我的广播接收器。但是,我有IntentServices(在后台运行)广播意图,因此需要广播接收器始终可用。我的代码注册接收器的方法工作正常,直到后退按钮被按下。然后,接收人将被注销,因为主要活动将被破坏。奇怪的广播接收器行为
因此,我的想法是将接收器的声明移到Manifest文件。但是,我遇到了一个奇怪的问题,每次我的代码广播一个意图时,都会创建一个广播接收器的新实例。我想要的是,广播接收器的一个实例始终可用。这是因为我的广播接收机创建并启动了一个定时器,但是如果创建了多个接收机实例,那么将创建多个定时器,这是不好的。
注意:我的广播接收器的单个实例可以处理收到意图但计时器已经启动的情况。
这是我在清单文件代码:
<receiver android:name=".StartTimerBroadcastReceiver" android:enabled="true" >
<intent-filter>
<action android:name="START_TIMER" />
</intent-filter>
</receiver>
这里是我的代码,广播意图:
Intent broadcastIntent = new Intent("START_TIMER");
broadcastIntent.putExtra("timerID", "timer1");
sendBroadcast(broadcastIntent);
难道我做错了什么?任何帮助表示赞赏。谢谢
感谢您的支持。我会研究这2个选项。在我的情况下,有一些静态方法的定时器处理程序类可能是可以接受的,因为我希望能够尽可能简单地在整个应用程序中使用单个定时器。我首先使用intent广播的基本原理是,我不必将定时器对象深入到代码中。然而,我认为一个正确实现的定时器处理程序,允许其他对象通过静态方法启动定时器将是好的:) – jtnire 2012-03-15 05:17:55