【问题标题】:Data send from service to activity not working从服务发送到活动的数据不起作用
【发布时间】:2021-12-09 00:06:42
【问题描述】:

我在服务中调用一个函数来向活动发送数据,我为此使用本地广播管理器,下面是服务中的代码

    private void sendDataToActivity(List<WNotificationModel> notificationList) {
    Intent intent=new Intent("listDataUpdate");
    intent.putExtra("hello","helloWorld");
    LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
}

下面是activity中接收数据的代码

public class WNotificationList extends AppCompatActivity {

private BroadcastReceiver mMessageReceiver=new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String name=intent.getStringExtra("hello");
        Log.d("catAndDog", "onReceive: "+name);
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_where_am_ilist_notification);

}

@Override
protected void onStart() {
    super.onStart();
    LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(mMessageReceiver,new IntentFilter("listDataUpdate"));
}

@Override
protected void onStop() {
    super.onStop();
    LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(mMessageReceiver);
}

}

【问题讨论】:

    标签: java android android-intent bundle localbroadcastmanager


    【解决方案1】:

    广播中有一些更新。

    从 Android 9(API 级别 28)开始,NETWORK_STATE_CHANGED_ACTION 广播不会接收有关用户位置或个人身份数据的信息。

    此外,如果您的应用安装在运行 Android 9 或更高版本的设备上,则来自 Wi-Fi 的系统广播不包含 SSID、BSSID、连接信息或扫描结果。要获取此信息,请改为调用 getConnectionInfo()。

    从 Android 8.0(API 级别 26)开始,系统对清单声明的接收器施加了额外的限制。

    如果您的应用以 Android 8.0 或更高版本为目标,则您不能使用清单为大多数隐式广播(不专门针对您的应用的广播)声明接收器。当用户积极使用您的应用时,您仍然可以使用上下文注册的接收器。

    请查看Developer.android.com

    看看这对你有没有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 2013-07-28
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多