TIF: Improve android.media.tv.TvContract.Programs.Genres#decode
test results:
random string(1000 channels) decode 1000 times on Nexus Player
6.8 seconds => 1.4 seconds
Bug: 23307587
Change-Id: If309b0819d705d791c8fa9b177e6d2bd0019102e
diff --git a/media/java/android/media/tv/TvContract.java b/media/java/android/media/tv/TvContract.java
index 7cd086e..e97df78 100644
--- a/media/java/android/media/tv/TvContract.java
+++ b/media/java/android/media/tv/TvContract.java
@@ -30,6 +30,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.StringTokenizer;
/**
* The contract between the TV provider and applications. Contains definitions for the supported
@@ -1318,7 +1319,13 @@
* @return canonical genre strings.
*/
public static String[] decode(String genres) {
- return genres.split("\\s*,\\s*");
+ StringTokenizer st = new StringTokenizer(genres, "\\s*,\\s*");
+ String[] result = new String[st.countTokens()];
+ int i = 0;
+ while (st.hasMoreTokens()){
+ result[i++] = st.nextToken();
+ }
+ return result;
}
/**