我正在尝试创建我的第一个Android应用。我想要一个主线程Activity(在我的情况下:一个ActionBarActivity)来接收来自后台Activity的事件通知(在我的例子中:一个IntentService)。我已经读到使用广播应该是最好的方法。
要注册广播接收器以侦听从后台活动发送的广播,我在主线程活动中使用以下代码:
// Register broadcast receiver
LocalBroadcastManager bManager = LocalBroadcastManager.getInstance(this);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.me.myBroadcast");
bManager.registerReceiver(bReceiver, intentFilter);
我尝试将它放在我的主线程活动的onCreate()方法中,但我很快发现每次重新启动活动(例如关闭应用程序并重新打开它)时,它似乎都会创建“重复”广播接收器,然后无论何时发送单个广播,都会多次触发广播接收器的onReceive()方法。这导致了问题。
所以我创建了一个SharedPreferences文件来保存一个布尔值,它记住我是否已经创建了一个广播接收器,以避免产生重复。这完全符合预期,直到我重新启动设备,然后广播接收器被销毁,并且应用程序不会创建新的,因为SharedPreferences布尔表示它已经有一个。
我猜我可以修改这个问题,方法是设置一个新的广播接收器来监听设备重启,这会重置SharedPreferences布尔值,但我有这种唠叨的感觉,我大量过度复杂化了。我错过了什么?感谢您提供的任何帮助!!