package com.jdroid.android.service; import com.google.android.gms.gcm.GcmNetworkManager; import com.google.android.gms.gcm.TaskParams; import com.jdroid.android.application.AbstractApplication; import com.jdroid.java.utils.ReflectionUtils; public class CommandGcmTaskService extends AbstractGcmTaskService { @Override protected String getTrackingLabel(TaskParams taskParams) { String serviceCommandExtra = taskParams.getExtras() != null ? taskParams.getExtras().getString(CommandWorkerService.COMMAND_EXTRA) : null; return serviceCommandExtra == null ? getTrackingVariable(taskParams) : serviceCommandExtra.substring(serviceCommandExtra.lastIndexOf(".") + 1); } @Override public int doRunTask(TaskParams taskParams) { String serviceCommandExtra = taskParams.getExtras() != null ? taskParams.getExtras().getString(CommandWorkerService.COMMAND_EXTRA) : null; if (serviceCommandExtra != null) { ServiceCommand serviceCommand = ReflectionUtils.newInstance(serviceCommandExtra); return serviceCommand.executeRetry(taskParams.getExtras()); } else { AbstractApplication.get().getExceptionHandler().logWarningException("Service command not found on " + getClass().getSimpleName()); return GcmNetworkManager.RESULT_FAILURE; } } }