Android14 开发之Broadcast延迟及Service常驻等新特性说明
Broadcast延迟问题
FLAG_RECEIVER_FOREGROUND 是 Android 中的一种标志,它用于将广播接收器(BroadcastReceiver)标记为前台广播。前台广播具有较高的优先级,系统会尽快调度前台广播接收器处理广播,确保及时性。
使用方法
使用 FLAG_RECEIVER_FOREGROUND 主要在两个场景中:
发送广播时:将广播标记为前台广播。
接收广播时:确保接收器在前台运行。
发送前台广播
在发送广播时,可以使用 sendBroadcast 方法,并传入一个 Intent 和 FLAG_RECEIVER_FOREGROUND 标志。例如:
val intent = Intent("com.example.ACTION")
intent.flags = Intent.FLAG_RECEIVER_FOREGROUND
sendBroadcast(intent)
示例代码
下面是一个完整的示例,包括发送和接收前台广播的代码。
发送前台广播
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 发送前台广播
val intent = Intent("com.example.ACTION")
intent.flags = Intent.FLAG_RECEIVER_FOREGROUND
sendBroadcast(intent)
}
}
注册广播接收器
要接收广播,需要在 AndroidManifest.xml 中静态注册广播接收器,或者在代码中动态注册。
静态注册(AndroidManifest.xml):
动态注册(代码):
class MainActivity : AppCompatActivity() {
private lateinit var receiver: MyBroadcastReceiver
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 动态注册广播接收器
receiver = MyBroadcastReceiver()
val filter = IntentFilter("com.example.ACTION"