过去几天我正致力于创建后台服务,我注意到很多人都说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次。感谢您的帮助!
答案 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" />