ユーザーが初めてアプリをインストールするたびに、instalationID がランダムに生成されます (Instalationid = 123 など)。ユーザーがアプリをアンインストールしてからインストールすると、新しいインストール ID ではなく古いインストール ID (123) が再度割り当てられるように、このインストール ID をバックアップしようとしています。結局のところ、彼は同じユーザーです。
instalationID を保持する という名前の共有設定ファイルがあり、共有設定ファイルSESSION_INFO_PREFERENCE_KEY
をバックアップしようとしています。バックアップ マネージャは次のとおりです。
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()
呼び出されて「現在バックアップ要求の準備ができていません」が表示されない場合には発生しません。