package cm.android.sdk; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import android.annotation.TargetApi; import android.app.Service; import android.content.Intent; public abstract class PersistentService extends Service { private static final Logger logger = LoggerFactory.getLogger("PersistentService"); @Override public void onCreate() { super.onCreate(); logger.info("onCreate:" + this); } @Override public void onDestroy() { super.onDestroy(); logger.info("onDestroy:" + this); } @Override @TargetApi(5) public final int onStartCommand(Intent intent, int flags, int startId) { if (null == intent) { logger.info("flags = {},startId = {}", flags, startId); if (startId % 3 == 0) { startService(new Intent(this, this.getClass())); return START_NOT_STICKY; } } onServiceStart(intent, flags, startId); super.onStartCommand(intent, flags, startId); return START_STICKY; } protected abstract void onServiceStart(Intent intent, int flags, int startId); }