AlarmManager Elapsed Real time 不工作?

AlarmManager Elapsed Real time Not Working?

所以我是新来的经过实时警报,我试图在 phone 开启后让我的服务 运行,但是服务似乎没有得到 运行.

设置闹钟。

Intent sintent=new Intent(getApplicationContext(),alrmsetter.class);
        PendingIntent setter= PendingIntent.getService(getApplicationContext(),137,sintent,0);
        AlarmManager mmanager=(AlarmManager)getSystemService(ALARM_SERVICE);
        mmanager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,6*1000,setter);

服务

public class alrmsetter extends Service
{
    public IBinder onBind(Intent intent)
    {
        return null;
    }

    public int onStartCommand(Intent intent, int flags, int startId)
    {
       Log.i("AREW","CLASS STRTED?");
        return super.onStartCommand(intent, flags, startId);

    }
}

I tried to make my service run after the phone was turned on, but the service doesn't seem to get run

警报不会通过重新启动持续存在,因此无论您是否在 phone 关闭之前设置了警报,警报都不会在下次启动时触发,除非再次设置。

这实际上就是 BOOT_COMPLETED 广播意图操作的目的。它使应用程序能够在启动时设置(或重置)它们的警报。这个dev guide讲讲怎么用。如果您的目标是 Android 5.0+,您通常可以使用 JobScheduler 以类似的方式触发服务,它会为您保留工作。

在您的情况下,您正在尝试设置“设备启动后 6 秒”的警报。这可能很棘手,因为经过的实时时钟从低级启动阶段开始,甚至 BOOT_COMPLETED 触发时,在大多数设备上已经超过 6 秒。

如果您确实需要在启动时做某事,请直接在BOOT_COMPLETED 接收器处理程序中处理它(即在那里开始你的服务)。如果您需要在该点之后重复该操作,则使用闹钟。