2011-12-18 80 views
0

我想要实现的是给用户一个按钮说'开始广播接收',另一个说'停止广播接收'。坚持BroadcastReceiver参考

我注册的BroadcastReceiver为 “android.provider.Telephony.SMS_RECEIVED” 意图( '开始广播接收' 功能):)

incomingSmsReceiver = new IncomingSmsReceiver(); 
IntentFilter filter = new IntentFilter(); 
filter.addAction("android.provider.Telephony.SMS_RECEIVED"); 
getApplicationContext().registerReceiver(incomingSmsReceiver, filter); 

然后我使用unregisterReceiver(为“停止广播接收':

getApplicationContext().unregisterReceiver(incomingSmsReceiver); 

正如你可以看到它使用相同的参考文献(private static BroadcastReceiver incomingSmsReceiver;)。

的问题是:

这只要我的应用程序的过程中不被终止工作正常。当用户点击“开始接收广播”,然后我的应用程序被Android杀死我失去了incomingSmsReceiver参考(当我运行我的应用程序下一次它默认设置为null)。当参考丢失时,用户无法停止接收广播。

如何坚持这一参考?如何在通过Android重新创建应用程序的过程后调用getApplicationContext().unregisterReceiver(incomingSmsReceiver);

回答

0

据我所知,您并不需要持有完全相同的BroadcastReciever参考。用与创建正常相同的方式创建新参考,并将其传递至unregisterService

+0

但是''public abstract void unregisterReceiver(BroadcastReceiver receiver)'方法中的Intents没有任何关系。它只获得BroadcastReceiver参考。 – ncreated 2011-12-18 15:59:26

+0

@ ricewind:更新了答案!对不起,错误。 – 2011-12-19 08:12:27