diff --git a/app/src/main/java/com/github/tvbox/osc/util/M3u8.java b/app/src/main/java/com/github/tvbox/osc/util/M3u8.java index 2363c3c2..89c22524 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/M3u8.java +++ b/app/src/main/java/com/github/tvbox/osc/util/M3u8.java @@ -234,8 +234,17 @@ public class M3u8 { return scan ? scan(line, ads) : line; } + private static final Map patternCache = new HashMap<>(); + private static Pattern getPattern(String regex) { + Pattern pattern = patternCache.get(regex); + if (pattern == null) { + pattern = Pattern.compile(regex); + patternCache.put(regex, pattern); + } + return pattern; + } private static String scanAd(String line,String TAG_AD) { - Matcher m1 = Pattern.compile(TAG_AD).matcher(line); + Matcher m1 = getPattern(TAG_AD).matcher(line); List needRemoveAd = new ArrayList<>(); while (m1.find()) { String group = m1.group();