1

ユーザーが初めてアプリをインストールするたびに、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()呼び出されて「現在バックアップ要求の準備ができていません」が表示されない場合には発生しません。

4

0 に答える 0