android服务START_STICKY START_NOT_STICKY

我需要保持我的服务始终在后台运行。 并使用“startService()”函数启动我的服务。 我不希望重新启动任何应用程序状态的服务。

这是我的观察。

START_STICKY>如果应用程序启动,则服务正在重新启动。 当应用程序关闭时,服务也会重新启动。

应用程序关闭后,START_NOT_STICK>服务无效。

我需要一个始终运行的服务,它将在应用程序启动时接收广播。 服务状态不依赖于应用程序是否正在运行。

你能帮助我吗 ?

谢谢。

你需要设置一个BOOT接收器,当设备启动时,它会启动你的服务警报(它会间歇性地唤醒并确保你的服务正在运行)。 ALARM接收器应该每分钟(或左右)唤醒,以确定您的服务尚未被Android清理(这将不时发生)。

[编辑]

您需要一个BootReceiver来启动您的警报,如下所示:

public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, new Intent(context, AlarmReceiver.class), 0); alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 2000, 60000, pendingIntent); } } 

并且alarmReceiver看起来像这样:

 public class AlarmReceiver extends BroadcastReceiver { private String TAG = "AlarmReceiver"; // onReceive must be very quick and not block, so it just fires up a Service @Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, MyLovelyService.class); PendingIntent.getService(context, 0,i, 0).send(); } } 

最后这需要进入你的清单: