我需要保持我的服务总是在后台运行。并使用"startService()“函数启动服务。无论应用程序的状态如何,我都不想重新启动服务。
这是我的观察结果。
START_STICKY >如果应用程序启动,服务将重新启动。当应用程序关闭时,服务也会重新启动。
START_NOT_STICK >服务在应用程序关闭后无法工作。
我需要一个总是在运行的服务,它将在应用程序启动时接收广播。服务状态不取决于应用程序是否正在运行。
你能帮我吗?
谢谢。
发布于 2013-08-22 17:47:36
您将希望设置一个引导接收器,它在设备启动时启动您的服务警报(它将间歇性地唤醒并确保您的服务正在运行)。警报接收器应该每分钟(大约)唤醒一次,以确保您的服务没有被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();
}
}最后,这需要进入你的清单:
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver android:name=".AlarmReceiver" />https://stackoverflow.com/questions/18387346
复制相似问题