广播接收者

广播接收者


一.动态注册广播

STEP 1 创建MyBroadcastReceiver类继承BroadcastReceiver

在注册广播前先要创建广播接收者,在其onReceive()方法中添加逻辑,注意此方法不应添加过多的逻辑和执行耗时的操作,且此方法不支持开启线程。

public class MyBroadcastReceive extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context,"Receive",Toast.LENGTH_SHORT).show();
        }
    }

STEP 2 在MainActivity中动态注册广播

在活动中,onCreate()方法里注册广播,点击事件发送广播,onDestory()方法里注销广播。

public class MainActivity extends Activity {
        private MyBroadcastReceive receive;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main_layout);

            Button button = (Button) findViewById(R.id.button);

            receive = new MyBroadcastReceive();             //实例化广播接收者

            IntentFilter filter = new IntentFilter();       
            filter.addAction(".LOCAL_BROADCAST");       //添加匹配规则;发送广播时需要对应此匹配规则

            registerReceiver(receive,filter);           //注册广播

        }

        public void click(View v){
            Intent intent = new Intent(".LOCAL_BROADCAST");         //Intent内添加匹配规则
            sendBroadcast(intent);          //发送(标准)广播
        }

        @Override
        protected void onDestroy() {
            super.onDestroy();
            unregisterReceiver(receive);            //注销广播;
        }
    }

这样,当我们点击Button时,就会发送一条广播,在MyBroadcastReceiver中的onReceive()方法中会接收到广播,并执行逻辑。

动态注册广播让开发者可以自由地控制注册与注销,比较灵活,但是必须在程序启动之后才能接收到广播。如果想让程序不启动也能接受到广播的话,就必须使用静态注册了。

二.静态注册广播

STEP 1 创建MyBroadcastReceiver类继承BroadcastReceiver

这点同动态注册一样。代码就不贴出来了。

STEP 2###在清单文件中注册

<receiver android:name=".MyBroadcastReceive">
            <intent-filter>
                <action android:name=".LOCAL_BROADCAST"/>
            </intent-filter>
        </receiver>

STEP 3 发送标准广播

public void click(View v){
            Intent intent = new Intent(".LOCAL_BROADCAST");         //Intent内添加匹配规则
            sendBroadcast(intent);          //发送(标准)广播
    }

三.发送顺序广播

STEP 1 添加优先级

只需在内添加priority属性即可。

<receiver android:name=".MyBroadcastReceive">
            <intent-filter android:priority="100">
                <action android:name=".LOCAL_BROADCAST"/>
            </intent-filter>
        </receiver>

STEP 2 发送有序广播

使用sendOrderedBroadcast()发送有序广播。第二个参数为与权限相关的字符串,这里我们填null;

Intent intent = new Intent(".LOCAL_BROADCAST");         //Intent内添加匹配规则
sendOrderedBroadcast(intent,null);          //发送(有序)广播

优先级高的接收者可以对广播进行拦截,在onReceive()方法中使用abortBroadcast()即可。

四.发送本地广播

一、二、三所实现的均为全局广播,即发出的广播可以被其他任何应用程序收到,我们也可以接受其他应用程序发出的广播,对安全性造成了很大的影响。所以我们用本地广播实现只在本应用程序内发送和接收广播。

实现本地广播需要用LocalBroadcastManager.getInstance(this)方法获取到LocalBroadcastManage的实例,因为注册本地广播、发送本地广播、注销本地广播都需要借助它来实现。

public class MainActivity extends Activity {
        private MyBroadcastReceive receive;
        private LocalBroadcastManager localBroadcastManager;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main_layout);

            Button button = (Button) findViewById(R.id.button);

            receive = new MyBroadcastReceive();             //实例化广播接收者
            localBroadcastManager = LocalBroadcastManager.getInstance(this);      //获取本地广播管理者的实例

            IntentFilter filter = new IntentFilter();
            filter.addAction(".LOCAL_BROADCAST");       //添加匹配规则;发送广播时需要对应此匹配规则

            localBroadcastManager.registerReceiver(receive,filter);           //使用本地广播管理者注册广播

        }

        public void click(View v){
            Intent intent = new Intent(".LOCAL_BROADCAST");         //Intent内添加匹配规则
            localBroadcastManager.sendBroadcast(intent);          //发送(本地)广播
        }

        @Override
        protected void onDestroy() {
            super.onDestroy();
            localBroadcastManager.unregisterReceiver(receive);            //注销广播;
        }
    }
基于SSM框架的智能家政保洁预约系统,是一个旨在提高家政保洁服务预约效率和管理水平的平台。该系统通过集成现代信息技术,为家政公司、家政服务人员和消费者提供了一个便捷的在线预约和管理系统。 系统的主要功能包括: 1. **用户管理**:允许消费者注册、登录,并管理他们的个人资料和预约历史。 2. **家政人员管理**:家政服务人员可以注册并更新自己的个人信息、服务类别和服务时间。 3. **服务预约**:消费者可以浏览不同的家政服务选项,选择合适的服务人员,并在线预约服务。 4. **订单管理**:系统支持订单的创建、跟踪和管理,包括订单的确认、完成和评价。 5. **评价系统**:消费者可以在家政服务完成后对服务进行评价,帮助提高服务质量和透明度。 6. **后台管理**:管理员可以管理用户、家政人员信息、服务类别、预约订单以及处理用户反馈。 系统采用Java语言开发,使用MySQL数据库进行数据存储,通过B/S架构实现用户与服务的在线交互。系统设计考虑了不同用户角色的求,包括管理员、家政服务人员和普通用户,每个角色都有相应的权限和功能。此外,系统还采用了软件组件化、精化体系结构、分离逻辑和数据等方,以便于未来的系统升级和维护。 智能家政保洁预约系统通过提供一个集的平台,不仅方便了消费者的预约和管理,也为家政服务人员提供了一个展示和推广自己服务的机会。同时,系统的后台管理功能为家政公司提供了强大的数据支持和决策辅助,有助于提高服务质量和管理效率。该系统的设计与实现,标志着家政保洁服务向现代化和网络化的转型,为管理决策和控制提供保障,是行业发展的重要里程碑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值