此问题可能是由于Android 10中的电池优化设置导致的。可以尝试通过以下代码解决:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ Intent intent = new Intent(); String packageName = getPackageName(); PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); if (pm.isIgnoringBatteryOptimizations(packageName)){ intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); } else { intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); intent.setData(Uri.parse("package:" + packageName)); } startActivity(intent); }
这将自动打开电源管理器中的“忽略电池优化”设置页面,以便用户可以将你的应用标记为已忽略。这样,即使设备没有充电或者屏幕关闭,服务仍然可以正常工作。
注意:用户可能需要手动将你的应用标记为已忽略,因为这个设置只是请求用户进行操作,用户可以选择不操作。
参考链接:https://developer.android.com/training/monitoring-device-state/doze-standby.html#support_for_other_use_cases