警报管理器 BrodcastReceiver

Alarm Manager BrodcastReceiver

我想在电池电量低时制作我的应用程序,例如从 6% 到 4% 在应用程序关闭时每 1 分钟推送一次通知

我是使用后台服务和使用 BrodcastReceiver 和许多其他的东西但是都告诉我警报管理器将与我的应用程序一起工作因为它在后台工作

我希望应用程序 运行 在用户下载应用程序时在后台运行,使应用程序监听电池电量,当电池电量为 6% 至 4% 时,每 1 分钟推送一次通知 工作经理通知

 public class NotificationWork extends Worker {
private static final String WORK_RESULT = "work_result";

public NotificationWork(@NonNull Context context, @NonNull WorkerParameters workerParams) {
    super(context, workerParams);
}

@NonNull
@Override
public Result doWork() {



    showNotification();


    return Result.success();
}

private void showNotification() {

    NotificationManager manager = (NotificationManager) getApplicationContext().getSystemService(
            Context.NOTIFICATION_SERVICE);

    String channelId = "task_channel";
    String channelName = "task_name";

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

        NotificationChannel channel = new
                NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_DEFAULT);
        manager.createNotificationChannel(channel);
    }

    NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext(), channelId)
            .setSmallIcon(R.drawable.ic_launcher_foreground)
            .setContentText("text")
            .setPriority(NotificationCompat.PRIORITY_DEFAULT)
            .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE)
            // Set the intent that will fire when the user taps the notification
            .setAutoCancel(true);


    manager.notify(1, builder.build());
}
 }

以及启动管理器工作的方法

private void startWorkManager() {


Constraints constraints = new Constraints.Builder()
        .setRequiresBatteryNotLow(true)
        .build();

    PeriodicWorkRequest periodicWorkRequest= new
            PeriodicWorkRequest.Builder(NotificationWork.class , 15 , TimeUnit.MINUTES)
            .build();

    WorkManager.getInstance().enqueue(periodicWorkRequest);


}

是的,当应用程序从后台删除时,不会调用警报管理器。您可以使用提供后台进程的工作管理器,甚至应用程序从后台删除。但它有一个限制。工作管理器的最小时间间隔为 15 分钟。以便工作经理每隔 15 分钟呼叫一次工作人员电话。 Work Manager

希望对您有所帮助。

编码愉快...