diff options
author | Clark Scheff <clark@cyngn.com> | 2014-09-04 15:13:59 -0700 |
---|---|---|
committer | Clark Scheff <clark@cyngn.com> | 2014-09-04 15:13:59 -0700 |
commit | bd60540de67b04d3a57021b64b180ac21518d247 (patch) | |
tree | dd0b6b5a9a166b6e9bc18c8e8a66842f699c07d2 /src | |
parent | de6e457e59a3bd20266b4597ea34595e5a18e103 (diff) | |
download | packages_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.java | 32 |
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); + } + } + } } |