我在BroadcastReceiver
内有一个Activity
来更改某些服务的视图(当它可见时)。我无法将其设置为静态(并在清单中声明它),因为我从onReceive()
内的活动访问视图,因此我在Activity
{{1}中注册/取消注册}& onResume()
。
onPause()
我从这样的服务向此接收器发送显式意图(必须在Android O 中):
public class MyActivity extends Activity {
private BroadcastReceiver mReceiver;
@Override
protected void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction("action1");
filter.addAction("action2");
mReceiver = new CustomReceiver();
registerReceiver(mReceiver, filter);
}
@Override
protected void onPause() {
super.onPause();
if (mReceiver != null)
unregisterReceiver(mReceiver);
}
//some code
class MyBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//NEVER GET HERE
}
}
}
我的实施有什么问题?
--- ---解
正如Mike M.评论的那样,如果他们使用 Intent intent = new Intent(appContext, MyActivity.MyBroadcast.class);
intent.setAction("action1");
sendBroadcast(intent);
BroadcastReceiver
应用程序可以在运行时使用Context.registerReceiver()为任何广播注册接收器,无论是隐式还是显式。
所以它会是:
Context.registerReceiver()