LauncherBackupAgentHelper.java revision 50c8f42568145b87b489e1ab65838f5fc434e5e6
1/*
2 * Copyright (C) 2013 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.launcher3;
18
19import android.app.backup.BackupAgentHelper;
20import android.app.backup.BackupManager;
21import android.app.backup.SharedPreferencesBackupHelper;
22import android.content.Context;
23import android.content.SharedPreferences;
24import android.provider.Settings;
25import android.util.Log;
26
27public class LauncherBackupAgentHelper extends BackupAgentHelper {
28
29    private static final String TAG = "LauncherBackupAgentHelper";
30    static final boolean VERBOSE = true;
31    static final boolean DEBUG = false;
32
33    private static BackupManager sBackupManager;
34
35    protected static final String SETTING_RESTORE_ENABLED = "launcher_restore_enabled";
36
37    /**
38     * Notify the backup manager that out database is dirty.
39     *
40     * <P>This does not force an immediate backup.
41     *
42     * @param context application context
43     */
44    public static void dataChanged(Context context) {
45        if (sBackupManager == null) {
46            sBackupManager = new BackupManager(context);
47        }
48        sBackupManager.dataChanged();
49    }
50
51    @Override
52    public void onDestroy() {
53        // There is only one process accessing this preference file, but the restore
54        // modifies the file outside the normal codepaths, so it looks like another
55        // process.  This forces a reload of the file, in case this process persists.
56        String spKey = LauncherAppState.getSharedPreferencesKey();
57        SharedPreferences sp = getSharedPreferences(spKey, Context.MODE_MULTI_PROCESS);
58        super.onDestroy();
59    }
60
61    @Override
62    public void onCreate() {
63        boolean restoreEnabled = 0 != Settings.Secure.getInt(
64                getContentResolver(), SETTING_RESTORE_ENABLED, 0);
65        if (VERBOSE) Log.v(TAG, "restore is " + (restoreEnabled ? "enabled" : "disabled"));
66
67        addHelper(LauncherBackupHelper.LAUNCHER_PREFS_PREFIX,
68                new LauncherPreferencesBackupHelper(this,
69                        LauncherAppState.getSharedPreferencesKey(),
70                        restoreEnabled));
71        addHelper(LauncherBackupHelper.LAUNCHER_PREFIX,
72                new LauncherBackupHelper(this, restoreEnabled));
73    }
74}
75