在activity之间传递handler(三)

本文介绍了如何在不关闭Activity B的情况下,从Activity B向Activity A发送广播,使A接收到消息并执行相应操作。通过在MainActivity中定义BroadcastReceiver并注册,然后在OtherActivity中发送广播,实现了Activity间的通信。这种方式保持了代码的独立性和私密性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

续 “在activity之间传递handler(二)”~

要解决的问题是: 在 activity A 里面打开了另一个activity B,在activity B 不关闭的情况下,也就是界面layout不变,发消息给前一个activity A, activity A接收消息,执行对应的操作。最先想用handler在activity之间传递消息,现在想到其实用broadcast也可以达到同样的目的,虽然不需要handler了。这种广播的方式也可以保持代码的独立性和私密性。
用Broacast的方法在两个activity之间传递数据。假设两个activity分别为MainActivity和OtherActivity,方法详细步骤如下。

1.在MainActivity里面定义广播接收器BroadcastReceiver,并注册。

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.e("TAG"," ++ broadcastReceiver++ ");
            textViewOld.append(intent.getExtras().getString("ActivityB") + "\n");
        }
    };

注册代码如下,OtherActivity.action是定义在OtherActivity里面的静态变量。

 IntentFilter filter = new IntentFilter(OtherActivity.action);
        registerReceiver(mReceiver,filter);

2.在OtherActivity里面发送广播,需要定义intent,把action设置进去,再绑定要发送的数据。这里还定义了一个按钮,点击按钮,activity就发送广播。

 public static final String action = "jason.broadcast.action";
 buttonBroadcast = (Button)findViewById(R.id.buttonBroadcast);
        buttonBroadcast.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent2 = new Intent(action);
                intent2.putExtra("ActivityB","I am from the broadcast of activity B");
                sendBroadcast(intent2);
            }
        });

3.MainActivity就收到广播啦。将广播里intent的内容解析出来就可以执行对应操作了。

附Tips:
另一个activity开始时,应用就启动了一个新线程,此时原来activity的线程并没有停止,它继续运行。

总结:
用了三种方法在activity之间传递数据,保持app的layout不变,另外的activity接收消息执行操作:(1)static handler 的方法,用handler发送message (2)定义application,在application作为中间媒介传递handler,用handler发送message (3)用broadcast传递intent,intent里面绑定数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值