java - 具有多组 SharedPreferences 的 BackupAgentHelper

标签 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); // <--
    }
}

哪一种是正确的方法?

谢谢!

最佳答案

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

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);
    }
}

关于java - 具有多组 SharedPreferences 的 BackupAgentHelper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28865917/

相关文章:

android - 如何在android中将PreferenceScreen设置为其他布局

.net - 重复数据删除框架?

sql - 将 Azure SQL 数据库备份到恢复服务保管库

Java错误api级别的方法

Java String.replaceAll() 引用最新找到的组

java - getHeight 和 getMeasuredHeight 返回 0,即使在 Runnable 中也是如此

postgresql - 如果数据库太忙,使用 pg_dump 进行备份是否会导致服务器中断?

java - 变量 a 可能尚未在冒泡排序程序中初始化

java - 调用内部类内部的方法

android - 尽管在 surfaceDestroyed() 中停止线程,但 SurfaceView 线程中的 null Canvas - 仅在 Android 4/ICS 上