关闭应用程序后,警报管理器不工作。我正在使用android 10

问题描述 投票:1回答:1
 Intent i = new Intent(getBaseContext(), MyReceiver.class);
 PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 100,i, PendingIntent.FLAG_UPDATE_CURRENT);
                AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
                alarmManager.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 5000, pi);
            }
        });
    }
private void  create()
{
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
        String tag="mm";
        Log.d(tag,"xyz");
        NotificationChannel notificationChannel = new NotificationChannel("abc","abc",NotificationManager.IMPORTANCE_HIGH);
        NotificationManager notificationManager =  getSystemService(NotificationManager.class);
        notificationManager.createNotificationChannel(notificationChannel);
    }

//接收器类别

public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    NotificationCompat.Builder notification  = new NotificationCompat.Builder(context,"abc")
            .setContentTitle("Title")
            .setContentText("text")
            .setPriority(NotificationManager.IMPORTANCE_HIGH)
            .setSmallIcon(R.drawable.ic_launcher_background);
    NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context);
    notificationManagerCompat.notify(1,notification.build());
}
}

清单文件也被更新。我在onCreate中调用了create函数。如果有人可以帮助我。我已经坚持了一个星期

android alarmmanager android-alarms
1个回答
0
投票

使用警报的首要考虑因素之一是警报的类型-

[有两种常规的警报时钟类型:“经过时间”和““实时时钟”(RTC)。过去的实时时间使用“系统自开机”作为参考,实时时钟使用UTC(壁钟)时间。这意味着经过的实时时间适合于设置基于随着时间的流逝(例如,每30分钟触发一次警报秒),因为它不受时区/地区的影响。实时时钟类型更适合于取决于电流的警报语言环境。

ELAPSED_REALTIME-根据自设备启动以来的时间触发挂起的意图,但不唤醒设备。经过的时间包括设备进入睡眠状态的任何时间。

ELAPSED_REALTIME-在自设备启动以来经过指定的时间长度后,唤醒设备并激发挂起的意图。

也,ELAPSED_REALTIME_WAKEUP返回自boot起的毫秒数,包括睡眠时间。尝试将其替换为ELAPSED_REALTIME_WAKEUP并返回当前时间,以毫秒为单位。

用于唤醒设备以在指定时间激发待处理的意图。您可以使用SystemClock#elapsedRealtime()警报类型。

AFAIK,AndroidQ中没有对您的上下文有影响的行为更改。

您也可以查看此S / O SystemClock#elapsedRealtime()

© www.soinside.com 2019 - 2024. All rights reserved.