【发布时间】:2016-10-06 20:46:28
【问题描述】:
我正在使用 LocalBroadcastManager 使用 APPLICATION CONTEXT 向我的活动和服务进行广播,如下所示:
public class CommonForApp extends Application{
public void broadcastUpdateUICommand(String[] updateFlags,
String[] flagValues) {
Intent intent = new Intent(UPDATE_UI_BROADCAST);
for (int i = 0; i < updateFlags.length; i++) {
intent.putExtra(updateFlags[i], flagValues[i]);
}
mLocalBroadcastManager = LocalBroadcastManager.getInstance(mContext);
mLocalBroadcastManager.sendBroadcast(intent);
}}
现在在我的服务中使用侦听器,我正在调用 broadcastUpdateUICommand() ,如下所示:
public class mService extends Service {
public BuildNowPLaylistListListener buildCursorListener = new BuildNowPLaylistListListener() {
@Override
public void onServiceListReady() {
mApp.broadcastUpdateUICommand(
new String[] { CommonForApp.INIT_DRAWER},
new String[] {""});
}}}
我正在我的 Activity 中接收广播,如下所示:
public class mActivity extends Activity{
BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
mtoast.showtext("in onreceive"); //toast to check
if (intent.hasExtra(CommonForApp.INIT_DRAWER))
initialiseDrawer();
}};
}
mApp 是应用程序的实例。 CommonForApp 是我的应用程序类。
但在我的活动中,我没有收到任何广播(广播管理器是使用应用程序上下文初始化的)。
谁能建议我为什么在我的活动中没有收到广播? ..
.提前致谢!
【问题讨论】:
-
投反对票的原因...Plz
-
发送广播时
Activity是否正在运行?您确定在Activity中使用正确的IntentFilter注册接收器吗?还有,你为什么不直接从Service广播? -
活动中的消息注册在哪里?
-
@MikeM。是的活动正在运行;根据我的代码实现,我不能直接从服务广播。
-
@StepanMaksymov Sendbroadcast() 来自应用程序上下文,所以我不需要注册它。
标签: android android-activity service android-context localbroadcastmanager