每当用户第一次安装我的应用时,会随机生成instalationID(比如Instalationid = 123)。我正在尝试备份此instalationID,以便当用户卸载然后安装我的应用程序时,旧的instalationID(123)将再次分配给他,而不是新的。毕竟,他是同一个用户。
我有一个名为SESSION_INFO_PREFERENCE_KEY
的共享首选项文件,它保存了instalationID,我尝试备份共享首选项文件。备份经理是:
public class ADCBackupAgent extends BackupAgentHelper {
// The name of the SharedPreferences file instalation ID
static final String INSTID = "SESSION_INFO_PREFERENCE_KEY"; //SESSION_INFO_INSTALLATION_UID
// A key to uniquely identify the set of backup data
static final String INSTID_BACKUP_KEY = "inst_id";
// Allocate a helper and add it to the backup agent
@Override
public void onCreate() {
Log.i("OnCreate Method","!!!!!!ON create called!!!!!!!!!!");
SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, INSTID);
addHelper(INSTID_BACKUP_KEY, helper);
}
}
此外,每当第一次生成instalationID时,我都会对备份管理器执行调用,例如:
//this pointing to the current Activity
BackupManager backUpManager = new BackupManager(this);
backUpManager.dataChanged();
为了完整:
<application
android:icon="@drawable/application_icon"
android:label="@string/app_name"
android:name="MyAppName"
android:theme="@style/FragmentTheme"
android:allowBackup="true"
android:backupAgent=".ADCBackupAgent">
...
<meta-data android:name="com.google.android.backup.api_key" android:value="AEdPqr..." />
</application>
当我在本地传输上备份(使用bmgr
工具)时,我的代码运行得非常好,但是,当我尝试备份Google云端的数据时,我得到:
04-28 15:12:24.305: W/BackupTransportService(390): Not ready for backup request right now: [OperationScheduler: enabledState=true lastSuccess=2014-04-03/15:10:49 moratoriumSet=2014-04-28/14:43:18 moratorium=2014-04-29/14:43:18 trigger=1969-12-31/19:00:00]
此外,永远不会调用onCreate()
方法。
当我备份本地传输上的数据时,这不会发生,即,onCreate()
被调用,并且“尚未准备好立即备份请求”。