闹钟管理器不会在 flyme os 上触发任何闹钟(魅族)
Alarm Manager doesn't fire any alarm on flyme os (meizu)
首先,其他设备上的所有警报都能很好地触发。 问题完全出在 FlymeOS(是电池优化、安全功能或类似的东西)。
其次,我尝试了不同的警报 setRepeating(), setExact(), setExactAndAllowWhileIdle()
并了解它们之间的差异。结果 - 除了 meizu 设备外,在任何地方都能正常工作。
那么如何让这些闹钟在魅族上响起呢?
问题出在魅族的后台进程限制上。后台模式有3个运行:"Allow running in background"、"Smart background"(这是你的root问题)和 "Disallow running in background"。所以 默认情况下为每个应用程序设置秒 并且只有当应用程序立即启动时才会触发警报,否则不会。
要解决您的问题,应设置"Allow running in background"。但您不能以编程方式执行此操作,因此 用户应自行更改此设置。
您所能做的就是为您的应用程序打开魅族安全页面并调用用户将此设置更改为 "Allow running in background":
Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.putExtra("packageName", BuildConfig.APPLICATION_ID);
首先,其他设备上的所有警报都能很好地触发。 问题完全出在 FlymeOS(是电池优化、安全功能或类似的东西)。
其次,我尝试了不同的警报 setRepeating(), setExact(), setExactAndAllowWhileIdle()
并了解它们之间的差异。结果 - 除了 meizu 设备外,在任何地方都能正常工作。
那么如何让这些闹钟在魅族上响起呢?
问题出在魅族的后台进程限制上。后台模式有3个运行:"Allow running in background"、"Smart background"(这是你的root问题)和 "Disallow running in background"。所以 默认情况下为每个应用程序设置秒 并且只有当应用程序立即启动时才会触发警报,否则不会。
要解决您的问题,应设置"Allow running in background"。但您不能以编程方式执行此操作,因此 用户应自行更改此设置。 您所能做的就是为您的应用程序打开魅族安全页面并调用用户将此设置更改为 "Allow running in background":
Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC");
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.putExtra("packageName", BuildConfig.APPLICATION_ID);