如何以编程方式确定 Android 应用程序是否在 Samsung Galaxy 上进入睡眠状态?

How to programmatically determine if an Android app is put to sleep on Samsung Galaxy?

三星 Galaxy 具有让应用程序进入休眠状态的功能 - 据我所知,这与应用程序的电池优化不同。

我需要以编程方式检查应用程序是否配置为休眠,以便我可以适当地警告用户这一点以及后台任务将无法运行的事实。

我知道 PowerManager.isIgnoringBatteryOptimizations() 但是这似乎与是否让应用程序进入睡眠状态无关。

三星睡眠功能的特点是 'differs' 来自 'background optimizations'。他们的功能旨在在 3 天后冻结应用程序(就像设置中的冻结一样),但根据用户偏好,它可以延长到 7 天。目前,没有已知的方法以编程方式检查应用程序是否已进入睡眠状态。

你可以做的是通知用户这件事并要求 'whitelist' 应用程序从即将休眠。

Intent intent = new Intent();
intent.setComponent(new ComponentName("com.samsung.android.sm", "com.samsung.android.sm.ui.battery.BatteryActivity"));

try {
   getActivity().startActivity(intent);
} catch (ActivityNotFoundException exception) {
     //Manager not installed
}

Code source

此代码将尝试打开 BatteryManager,用户可以从那里 select 选项来防止应用休眠。

相关问题如下:

How do I check that my app enters optimizations Samsung devices?

Samsung “App optimization” feature kills background applications after 3 days

This blog should help you in figuring out the ways to inform the user about the issue