我正在尝试创建我的第一个Android应用程序。我希望一个主线程活动(在我的例子中是一个ActionBarActivity)接收来自后台活动的事件通知(在我的例子中是一个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布尔值来修补这个问题,但我有一种唠叨的感觉,认为我正在使事情变得过于复杂。我遗漏了什么?谢谢您的帮助!!
发布于 2015-05-24 14:24:55
https://stackoverflow.com/questions/30414410
复制相似问题