将广播发送到不在活动堆栈中的活动

时间:2014-01-25 19:35:55

标签: android broadcastreceiver

我有一个包含许多活动的应用程序。

应用程序的状态由我从互联网上通过网络服务

收到的数据保存

在某个时间,我的网络服务将告诉我,在我已经登录之后,我需要执行登录,并且登录活动不在活动堆栈上。

我希望,当我收到重新登录信息(在http相关课程中)时,向系统发送广播,打开登录活动。

当这个广播到来时,我在哪里需要注册这个广播接收器,因为我可能正在进行任何活动?

2 个答案:

答案 0 :(得分:0)

如果您不知道发送信号时先验哪个Activity将运行,最好的方法是在Manifest文件中定义它,就像这样:

<receiver android:name="YourReceiver" >
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
  </intent-filter>
</receiver>

答案 1 :(得分:0)

您可以在AndroidManifest.xml中注册BroadcastReceiver,就像这样

<receiver android:name=".YourBroadcastReceiver" android:exported="false">
  <intent-filter>
    <action android:name="YOUR_PACKAGE_NAME.INETENT_NAME" />
  </intent-filter>
</receiver>

如果您的广播仅用于处理内部意图,请确保将其声明为exported false,否则其他一些应用程序可以通过发送广播随时中断并打开您的登录信息。

编辑:

此处name是BroacastReceiver的包名称的确切路径。如果它位于主包中,则dot(。)就足够了,因为引用是从manifest标签中定义的包中获取的,但是如果它位于其他包中,例如yourcommonapppackage.broadcastreceiver.YourBroadcastReceiver,则必须相应地给出名称。

您可以提供是否已完整填写包或参考主包。