Android有序广播实战:发送与接收示例

5星 · 超过95%的资源 5 下载量 142 浏览量 更新于2024-09-01 收藏 130KB PDF 举报
在Android开发中,有序广播是一种重要的设计模式,它允许应用程序按照特定的顺序或优先级来传递广播事件。有序广播与无序广播的主要区别在于处理消息的时序性。无序广播是异步的,不保证消息的传递顺序,而有序广播则确保按照预先设定的优先级进行逐个处理。 实验要求是在一个简单的Android应用中实现有序广播。首先,我们需要在`activity-main.xml`布局文件中设置一个Button,当用户点击该按钮时触发发送有序广播的事件。代码如下: ```xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:background="@drawable/stitch_one" tools:context="cn.edu.bzu.orderedbroadcast.MainActivity"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:onClick="send" android:layout_marginTop="50dp" android:text="发送有序广播" android:paddingLeft="5dp" android:paddingRight="5dp" android:background="#FFD202" android:textSize="20sp" /> </RelativeLayout> ``` 在这个布局中,`onClick="send"`属性定义了一个名为`send`的方法,这个方法将在用户点击按钮时被调用。 在`MainActivity`类中,你需要创建并注册一个有序广播接收器,然后在`send`方法中调用`sendOrderedBroadcast()`函数。这里的关键代码可能如下所示: ```java import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; public class MainActivity extends AppCompatActivity { private BroadcastReceiver mOrderedBroadcastReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 注册有序广播接收器 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("cn.edu.bzu.orderedbroadcast.ORDERED_BROADCAST"); mOrderedBroadcastReceiver = new OrderedBroadcastReceiver(); registerReceiver(mOrderedBroadcastReceiver, intentFilter); // 其他初始化和设置... } // 发送有序广播的方法 public void send(View view) { Intent intent = new Intent("cn.edu.bzu.orderedbroadcast.ORDERED_BROADCAST"); // 设置有序广播的优先级,可以根据需求自定义 intent.putExtra("priority", 1); // 假设优先级为1 sendOrderedBroadcast(intent, null, null, null, null, 0, null); } // 有序广播接收器 private class OrderedBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 在这里处理接收到的有序广播,逻辑完成后释放资源 // ... unregisterReceiver(this); // 一旦处理完毕,记得注销接收器 } } } ``` 在这个例子中,我们创建了一个名为`OrderedBroadcastReceiver`的内部类,它继承自`BroadcastReceiver`。当有序广播被发送时,`onReceive()`方法会被调用。在`send()`方法中,我们设置了广播的意图(`ACTION`)和一个自定义的优先级(`priority`),然后通过`sendOrderedBroadcast()`函数发送广播。接收器的注册和注销确保了有序广播的完整流程。 通过了解Android的有序广播机制,开发者可以更好地控制消息传递的时序,确保应用中的事件按照预期顺序执行。在实际项目中,根据业务需求合理利用有序广播,可以提升用户体验和系统的可控性。