Java Android:如何在服务首次运行时拦截

Java Android:如何在服务首次运行时拦截,java,android,service,alarmmanager,Java,Android,Service,Alarmmanager,你好,谢谢你的帮助 我有以下情况 我有一个AlarmManager,它每1分钟启动一次服务 只有当服务第一次启动时,我才必须在该服务中执行特定的方法。而不是在以后启动时 我不认为共享偏好是一种解决方案,因为如果手机关机,它们会持续存在 请问我该如何解决这个问题 谢谢你的建议 您可以在onCreate()中调用它。见正式文件。它说: 首次创建服务时由系统调用。不要直接调用此方法。 作为参考,您可以查看问题并尝试从应用程序中继承表单并存储在其中 public class YourApp extend

你好,谢谢你的帮助

我有以下情况

我有一个AlarmManager,它每1分钟启动一次服务

只有当服务第一次启动时,我才必须在该服务中执行特定的方法。而不是在以后启动时

我不认为共享偏好是一种解决方案,因为如果手机关机,它们会持续存在

请问我该如何解决这个问题


谢谢你的建议

您可以在onCreate()中调用它。见正式文件。它说:

首次创建服务时由系统调用。不要直接调用此方法。


作为参考,您可以查看问题并尝试从应用程序中继承表单并存储在其中

public class YourApp extends Application {

private static boolean mFirstRun = false;

public static boolean getFirstRun() { return mFirstRun; }
public static void clearFirstRun() { mFirstRun = false; }
从您的服务:

if (YourApp.getFirstRun()) 
{
   clearFirstRun();
   // run first time code
}

但是它可以被第二次创建,即使它一直在运行。是的,如果它在某个时候被杀死,然后重新启动。所以,即使它被杀死,你也不想调用你的代码?如果应用程序的整个生命周期都在运行,您只需调用它一次。我会向alarmmanager添加一个服务或广播,该服务或广播将首先启动,并且只启动一次,以重置共享pref的内容。或者,您可以在/tmp中写入一个文件,重新启动时应将其删除