/** * Ensures a pattern is initialized and active. If the pattern doesn't already exist, one is * created and (if the activity/fragment is currently started). Otherwise the last created pattern * is re-used. * * <p>In either case, the given callback is associated with the pattern, and will be called as the * pattern state changes. * * @param id A unique identifier for this pattern. Can be whatever you want. Identifiers are * scoped to a particular PatternManager instance. * @param args Optional arguments to supply to the pattern at construction. If a pattern already * exists (a new one does not need to be created), this parameter will be ignored and the last * arguments continue to be used. * @param callback Interface the PatternManager will call to report about changes in the state of * the pattern. Required. * @return */ public Pattern initPattern(int id, Bundle args, PatternCallbacks callback) { RetainedPatternArray patternArray = getRetainedPatternArray(); if (patternArray == null) { patternArray = new RetainedPatternArray(); getRetainedFragment().getRetainedSystemInstanceMap().put(KEY, patternArray); } Pattern pattern = patternArray.get(id); if (pattern == null) { pattern = callback.onCreatePattern(id, args); patternArray.put(id, pattern); } return pattern; }
/** * Stops and removes the pattern with the given ID. * * @param id The ID of the pattern you want to remove. */ public void destroyPattern(int id) { RetainedPatternArray patternArray = getRetainedPatternArray(); if (patternArray != null) patternArray.remove(id); }
/** * Return the Pattern with the given id or {@code null} if no matching Pattern is found. * * @param id A unique identifier for this pattern. Can be whatever you want. Identifiers are * scoped to a particular PatternManager instance. * @return The pattern with the given id or {@code null} if no matching Pattern is found. */ public Pattern getPattern(int id) { RetainedPatternArray patternArray = getRetainedPatternArray(); return (patternArray == null ? null : patternArray.get(id)); }