diff options
Diffstat (limited to 'common/src/com/android/tv/common/util/SharedPreferencesUtils.java')
-rw-r--r-- | common/src/com/android/tv/common/util/SharedPreferencesUtils.java | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/common/src/com/android/tv/common/util/SharedPreferencesUtils.java b/common/src/com/android/tv/common/util/SharedPreferencesUtils.java new file mode 100644 index 00000000..e8bfe61b --- /dev/null +++ b/common/src/com/android/tv/common/util/SharedPreferencesUtils.java @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.tv.common.util; + +import android.content.Context; +import android.os.AsyncTask; +import android.preference.PreferenceManager; +import com.android.tv.common.CommonConstants; + +/** Static utilities for {@link android.content.SharedPreferences} */ +public final class SharedPreferencesUtils { + // Note that changing the preference name will reset the preference values. + public static final String SHARED_PREF_FEATURES = "sharePreferencesFeatures"; + public static final String SHARED_PREF_BROWSABLE = "browsable_shared_preference"; + public static final String SHARED_PREF_WATCHED_HISTORY = "watched_history_shared_preference"; + public static final String SHARED_PREF_DVR_WATCHED_POSITION = + "dvr_watched_position_shared_preference"; + public static final String SHARED_PREF_AUDIO_CAPABILITIES = + CommonConstants.BASE_PACKAGE + ".audio_capabilities"; + public static final String SHARED_PREF_RECURRING_RUNNER = "sharedPreferencesRecurringRunner"; + public static final String SHARED_PREF_EPG = "epg_preferences"; + public static final String SHARED_PREF_SERIES_RECORDINGS = "seriesRecordings"; + /** No need to pre-initialize. It's used only on the worker thread. */ + public static final String SHARED_PREF_CHANNEL_LOGO_URIS = "channelLogoUris"; + /** Stores the UI related settings */ + public static final String SHARED_PREF_UI_SETTINGS = "ui_settings"; + + public static final String SHARED_PREF_PREVIEW_PROGRAMS = "previewPrograms"; + + private static boolean sInitializeCalled; + + /** + * {@link android.content.SharedPreferences} loads the preference file when {@link + * Context#getSharedPreferences(String, int)} is called for the first time. Call {@link + * Context#getSharedPreferences(String, int)} as early as possible to avoid the ANR due to the + * file loading. + */ + public static synchronized void initialize(final Context context, final Runnable postTask) { + if (!sInitializeCalled) { + sInitializeCalled = true; + new AsyncTask<Void, Void, Void>() { + @Override + protected Void doInBackground(Void... params) { + PreferenceManager.getDefaultSharedPreferences(context); + context.getSharedPreferences(SHARED_PREF_FEATURES, Context.MODE_PRIVATE); + context.getSharedPreferences(SHARED_PREF_BROWSABLE, Context.MODE_PRIVATE); + context.getSharedPreferences(SHARED_PREF_WATCHED_HISTORY, Context.MODE_PRIVATE); + context.getSharedPreferences( + SHARED_PREF_DVR_WATCHED_POSITION, Context.MODE_PRIVATE); + context.getSharedPreferences( + SHARED_PREF_AUDIO_CAPABILITIES, Context.MODE_PRIVATE); + context.getSharedPreferences( + SHARED_PREF_RECURRING_RUNNER, Context.MODE_PRIVATE); + context.getSharedPreferences(SHARED_PREF_EPG, Context.MODE_PRIVATE); + context.getSharedPreferences( + SHARED_PREF_SERIES_RECORDINGS, Context.MODE_PRIVATE); + context.getSharedPreferences(SHARED_PREF_UI_SETTINGS, Context.MODE_PRIVATE); + return null; + } + + @Override + protected void onPostExecute(Void result) { + postTask.run(); + } + }.execute(); + } + } + + private SharedPreferencesUtils() {} +} |