分享

Android开发--Service和Activity通过广播传递消息

 Coder编程 2022-10-05 发布于北京

Android的Service也运行在主线程,但是在服务里面是没法直接调用更改UI,如果需要服务传递消息给Activity,通过广播是其中的一种方法:

一、在服务里面发送广播

通过intent传送数据、通过setAction 设置Activity接收广播时要过滤的动作名   

Intent intent = new Intent();
 intent.putExtra("key", "test");
 intent.setAction("location.reportsucc");
 sendBroadcast(intent);

二、在Activity中创建内部类做为广播接收器,需实现BroadcastReceiver

//内部类,实现BroadcastReceiverpublic class LocationReceiver extends BroadcastReceiver {//必须要重载的方法,用来监听是否有广播发送        @Overridepublic void onReceive(Context context, Intent intent) {
            String intentAction = intent.getAction();if (intentAction.equals("location.reportsucc")) {
                
            }
        }
    }

三、在Activity创建时注册广播接收器,

filter.addAction值必须和服务里面注册的Action名称一致
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

 
        locationReceiver = new LocationReceiver();
        IntentFilter filter = new IntentFilter();
        filter.addAction("location.reportsucc");
        registerReceiver(locationReceiver, filter);
    }

四、最后记住在不需要广播接收器的时候,卸载广播接收器。例如在Activity销毁时卸载广播接收器

@Overrideprotected void onDestroy() {
        unregisterReceiver(locationReceiver);super.onDestroy();
    }

总结:通过发送广播,是一种实现了服务和活动之间互相通信的方式。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多