非静态内部类BroadcastReceiver未触发

时间:2018-02-22 10:22:28

标签: android android-intent broadcastreceiver onresume onpause

我在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);

进行注册,即使在Andorid O中也可以使用隐式意图触发BroadcastReceiver
  

应用程序可以在运行时使用Context.registerReceiver()为任何广播注册接收器,无论是隐式还是显式。

所以它会是:

Context.registerReceiver()

0 个答案:

没有答案