静态注册(8.0之后不可用)
当app静态注册了广播,在未启动的情况下,系统会拉起app。因此,如果多个app静态注册了系统的广播,那么就会拉起很多的app。 为了优化性能,在Android8.0(26)后静态注册的隐式广播无法接收。建议使用动态注册,或者发送广播时指定包名。
1.继承BroadcastReceiver
class DateChangeReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
// 处理日期变化逻辑
if (Intent.ACTION_TIME_TICK == intent.action) {
// 日期发生变化,执行相应的操作
Log.d("时间改变事件", "onReceive: ${System.currentTimeMillis()}")
}
}
}
2.编写清单文件
<receiver
android:name=".Receiver.DateChangeReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.DATE_CHANGED" />
</intent-filter>
</receiver>
动态注册
1.参考动态注册步骤1
2.注册广播
class TestActivity : ComponentActivity() {
private val dateChangeReceiver = DateChangeReceiver()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 注册广播
this.registerReceiver(dateChangeReceiver, intentFilter);
}
@Override
override fun onDestroy() {
super.onDestroy()
// 解绑广播
this.unregisterReceiver(dateChangeReceiver)
}
}