0

所以我对经过的实时警报不熟悉,我试图在手机打开后让我的服务运行,但服务似乎没有运行。

设置闹钟。

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);

    }
}
4

1 回答 1

1

我试图在手机打开后让我的服务运行,但服务似乎没有运行

警报不会在重启后持续存在,因此无论您是否在手机关机前设置了警报,除非再次设置,否则下次启动时不会触发警报。

这实际上是BOOT_COMPLETED广播意图操作的用途。它使应用程序能够在启动时设置(或重置)其警报。本开发指南讨论了如何使用它。如果您的目标是 Android 5.0+,您通常可以使用JobScheduler类似的方式触发服务,它会为您保留工作。

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

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

于 2015-02-18T15:21:45.303 回答