我该怎么做才能确保后台服务不会重启两次?

时间:2014-06-16 12:40:55

标签: android android-service alarmmanager background-service

过去几天我正致力于创建后台服务,我注意到很多人都说AlarmManager是最好的方法。

    AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
    intent.putExtra(ONE_TIME, Boolean.FALSE);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
    //After after 5 seconds
    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 5 ,

我想知道的是如何确保如果此代码运行两次,则服务将无法启动2次。感谢您的帮助!

2 个答案:

答案 0 :(得分:5)

服务无法启动两次,如果您尝试重新启动它,它将继续运行。 见这里:http://developer.android.com/guide/components/services.html#StartingAService

编辑: 但是,每次启动服务时,都会调用onStartCommand()方法。

答案 1 :(得分:0)

这是我用过的,从当前时间开始服务30秒后,

  Intent intent = new Intent(DashboardScreen.this, ServiceClass.class);
  PendingIntent pintent = PendingIntent.getService(DashboardScreen.this, 0, intent, 0);
  AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
  alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 30*1000, pintent);

尝试一下,让我知道发生了什么......

编辑:

在manifest.xml文件中

  <service android:enabled="true" android:name=".ServiceClass" />