BackupAgentHelper具有多组SharedPreferences

时间:2015-03-04 22:03:47

标签: java android backup sharedpreferences

我无法理解addHelper()方法的keyPrefix。 是否需要为每个BackupAgentHelper类实例或每个SharedPreferencesBackupHelper都是唯一的? 我想备份两组或更多组SharedPreferences:

示例:

public class PrefsBackupAgent extends BackupAgentHelper {

    // Allocate a helper and add it to the backup agent
    @Override
    public void onCreate() {
        SharedPreferencesBackupHelper user1 = new SharedPreferencesBackupHelper(this, "user1_preferences");
        addHelper('prefs', user1); // <-- keyPrefix same to both addHelper Calls?

        SharedPreferencesBackupHelper user2 = new SharedPreferencesBackupHelper(this, "user2_preferences");
        addHelper('prefs', user2); // <--
    }
}

或是否需要看起来像这样:

public class PrefsBackupAgent extends BackupAgentHelper {

    // Allocate a helper and add it to the backup agent
    @Override
    public void onCreate() {
        SharedPreferencesBackupHelper user1 = new SharedPreferencesBackupHelper(this, "user1_preferences");
        addHelper('user1', user1); // <-- or do they need to be unique for each SharedPreferencesBackupHelper ?

        SharedPreferencesBackupHelper user2 = new SharedPreferencesBackupHelper(this, "user2_preferences");
        addHelper('user2', user2); // <--
    }
}

哪一个是正确的方法?

谢谢!

1 个答案:

答案 0 :(得分:0)

你的第一个例子是正确的。

public class MyBackupAgentHelper extends BackupAgentHelper {

    static final String DEFAULT_PREFS = "packagename_preferences";
    static final String OTHER_PREFS = "packagename_other_preference";

    // A key to uniquely identify the set of backup data
    static final String PREFS_BACKUP_KEY = "prefs";

    @Override
    public void onCreate() {
        SharedPreferencesBackupHelper helper1 = new SharedPreferencesBackupHelper(this, DEFAULT_PREFS);
        SharedPreferencesBackupHelper helper2 = new SharedPreferencesBackupHelper(this, OTHER_PREFS);
        addHelper(PREFS_BACKUP_KEY, helper1);
        addHelper(PREFS_BACKUP_KEY, helper2);
    }
}