我的程序如何在 android studio 中始终在后台保持清醒

how my program stays awake all the time in the background in android studio

我正在开发一个喜欢来电显示的程序。我必须让它一直保持清醒,同时运行后台。

我需要哪些权限或标志?

另外,我如何才能获得关闭我的应用程序的电池优化权限

谢谢

checking/disabling 电池优化使用以下方法

public static boolean isBatteryOptimisationEnabled(Context context) {
    if (Build.VERSION.SDK_INT >= 23) {
        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        return pm != null && !pm.isIgnoringBatteryOptimizations(context.getPackageName());
    }
    return false;
}

@TargetApi(23)
private static void gotoBatteryOptimisationSettings(Context context) {
    Intent intent = new Intent();
    String packageName = context.getPackageName();
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    if (pm == null || 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));
    }
    context.startActivity(intent);
}

并且为了让您的应用 运行 一直保持您必须在 ForegroundService

中实现您的逻辑

您永远无法让后台服务始终保持活动状态。如果你想确保服务始终保持 运行 你应该使用前台服务。

但是

对于您的具体使用,您应该使用广播接收器来观察用户调用。see this