summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorClark Scheff <clark@cyngn.com>2014-09-04 15:13:59 -0700
committerClark Scheff <clark@cyngn.com>2014-09-04 15:13:59 -0700
commitbd60540de67b04d3a57021b64b180ac21518d247 (patch)
treedd0b6b5a9a166b6e9bc18c8e8a66842f699c07d2 /src
parentde6e457e59a3bd20266b4597ea34595e5a18e103 (diff)
downloadpackages_apps_ThemeChooser-bd60540de67b04d3a57021b64b180ac21518d247.zip
packages_apps_ThemeChooser-bd60540de67b04d3a57021b64b180ac21518d247.tar.gz
packages_apps_ThemeChooser-bd60540de67b04d3a57021b64b180ac21518d247.tar.bz2
Load the actual audible in a separate thread
Audibles can take up to 300+ms, per audible, to load from the theme apk. To reduce the latency when expanding a theme, these audibles will be loaded in a separate thread. Change-Id: I48676284d4673d8a22105dac323f0f056e6f7a78
Diffstat (limited to 'src')
-rw-r--r--src/com/cyngn/theme/chooser/ThemeFragment.java32
1 files changed, 26 insertions, 6 deletions
diff --git a/src/com/cyngn/theme/chooser/ThemeFragment.java b/src/com/cyngn/theme/chooser/ThemeFragment.java
index fe04462..e4d2a16 100644
--- a/src/com/cyngn/theme/chooser/ThemeFragment.java
+++ b/src/com/cyngn/theme/chooser/ThemeFragment.java
@@ -1680,12 +1680,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb
}
String pkgName = c.getString(pkgNameIdx);
setCardTitle(audibleContainer, pkgName, getAudibleLabel(type));
- try {
- AudioUtils.loadThemeAudible(getActivity(), type, pkgName, mp);
- } catch (PackageManager.NameNotFoundException e) {
- Log.w(TAG, "Unable to load sound for " + pkgName, e);
- return;
- }
+ AudibleLoadingThread thread = new AudibleLoadingThread(getActivity(), type, pkgName, mp);
title.setText(c.getString(titleIdx));
if (!mPkgName.equals(pkgName) || (mPkgName.equals(pkgName)
&& mBaseThemeSupportedComponents.contains(component))) {
@@ -1700,6 +1695,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb
if (animate) {
animateContentChange(parentResId, content, overlay);
}
+ thread.start();
}
protected Drawable getOverlayDrawable(View v, boolean requiresTransparency) {
@@ -2288,4 +2284,28 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb
}
}
}
+
+ class AudibleLoadingThread extends Thread {
+ private Context mContext;
+ private int mType;
+ private String mPkgName;
+ private MediaPlayer mPlayer;
+
+ public AudibleLoadingThread(Context context, int type, String pkgName, MediaPlayer mp) {
+ super();
+ mContext = context;
+ mType = type;
+ mPkgName = pkgName;
+ mPlayer = mp;
+ }
+
+ @Override
+ public void run() {
+ try {
+ AudioUtils.loadThemeAudible(mContext, mType, mPkgName, mPlayer);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.w(TAG, "Unable to load sound for " + mPkgName, e);
+ }
+ }
+ }
}