@Override @SuppressWarnings("unchecked") public boolean onStartJob(JobParameters params) { try { if (sTaskPool == null) throw new NullPointerException("TaskJobService TaskPool not set!"); BaseBundle bundle = params.getExtras(); String taskName = bundle.getString(TaskScheduler.TASK_NAME); Task task = (Task) Class.forName(taskName).newInstance(); ArrayMap<String, Object> map = new ArrayMap<>(bundle.size()); for (String key : bundle.keySet()) { map.put(key, bundle.get(key)); } task.deserialize(map); if (task instanceof HttpTask) Http.execute((HttpTask)task).addCallback(new JobCallback(params)); else sTaskPool.execute(task).addCallback(new JobCallback(params)); return true; } catch (Exception err) { LOG.e("Error running task", err); jobFinished(params, true); return false; } }