从服务发送到活动的数据不起作用

Posted

技术标签:

【中文标题】从服务发送到活动的数据不起作用【英文标题】: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);

【问题讨论】:

【参考方案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

看看这对你有没有帮助。

【讨论】:

以上是关于从服务发送到活动的数据不起作用的主要内容,如果未能解决你的问题,请参考以下文章

推送通知在应用程序运行时不起作用(活动)[重复]

带有活动的广播接收器服务反馈不起作用

将消息发送到 XMPP 服务器的 php 函数不提供日志并且不起作用

将原始数据包发送到 Android 中的 NetworkInterface 不起作用?

从 Web 服务器接收数据不起作用(volley library android)

尝试从 localhost 向 localhost:8000 发送数据时,ajax 调用不起作用