【发布时间】:2015-05-20 20:59:37
【问题描述】:
在我的项目中,我有 2 个活动。从主要活动中,我将启动带有本机 VideoView 的第二个活动,并在 onCreate 方法中调用完成,以便我将在后台运行。但我想将更新发送回 MainActivity,例如暂停、启动、停止等。我发现 BroadcastReceiver 是解决此问题的最佳方法。这是我正在做的事情,但是 MainActivity 没有收到第二个 Activity 发送的广播,这是我的代码。
在 MainActivity.java 中,
BroadcastReceiver broadcastReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
System.out.println("In onReceive");
}
};
private IntentFilter filter = new IntentFilter("com.example.broadcast");
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
registerReceiver(broadcastReceiver, filter);
}
在第二个活动中,
Intent intent = new Intent("com.example.broadcast");
intent.putExtra("Status", status);
sendBroadcast(intent);
我做错了什么?
【问题讨论】:
-
注册接收者如:
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, filter); -
很可能,当显示第二个
Activity时,MainActivity不活动。您在哪里取消注册接收器? -
@bigdestroyer,我无法添加
LocalBroadcastManager,因为它无法在 Android Studio 中解析。 -
@323go,当我在 2nd Activity 上调用 finish() 时,它正在显示 MainActivity,所以我认为 MainActivity 处于活动状态。
-
@Krish : Urrm,如果第二个 Activity 已使用
finish()终止,它如何发送广播?
标签: android android-activity broadcastreceiver