【Android Developers Training】88.バックアップAPIを使用する

10983 ワード

この文章はGoogleの公式Android Developers Trainingの文書から訳して、翻訳者の技術は普通で、Androidが好きなため翻訳の考えを生んで、全く個人の興味の趣味です.
リンク:http://developer.android.com/training/cloudsync/backupapi.html
ユーザーが新しいデバイスを購入し、既存のデバイスをリセットすると、Google Playが初期化段階でアプリケーションを回復させ、同時に対応するデータを回復させることが期待されるかもしれない.デフォルトでは、このようなことは発生しません.ユーザーの進捗とアプリケーションの配置は失われます.
いくつかの軽量データ(一兆以下)については、ユーザーの構成、記録、ゲームの最高点または他の類似データなど、APIのバックアップには軽量級のソリューションが提供されます.この授業では、APIのバックアップをどのようにあなたのアプリケーションに統合するかを教えます.そしてデータを復元するためにそれを使います.
一)Androidバックアップサービスの登録
この授業はAndroidバックアップサービス(Android Backup Service)を使う必要があります.登録が必要です.登録が完了すると、XMLタグが作成され、Androidの設定リストに挿入されます.
<meta-data android:name="com.google.android.backup.api_key"

android:value="ABcDe1FGHij2KlmN3oPQRs4TUvW5xYZ" />
注意各バックアップキーはパッケージ名に対応しています.異なるアプリケーションがある場合は、それぞれのアプリケーションに異なるキーを登録する必要があります.
二)あなたのリストファイルを配置する
Androidのバックアップサービスを使うには、あなたのコンフィギュレーションリストに二つを追加する必要があります.まずバックアッププロキシ機能のクラス名を宣言し、上記のタブを「Application」のサブタグとして追加します.バックアッププロキシを「The BackupAgent」と呼ぶと仮定して、以下に該当する例の配置ファイルの大体の様子を示します.
<application android:label="MyApp"

             android:backupAgent="TheBackupAgent">

    ...

    <meta-data android:name="com.google.android.backup.api_key"

    android:value="ABcDe1FGHij2KlmN3oPQRs4TUvW5xYZ" />

    ...

</application>
三)あなたの構成代理を作成する
バックアップエージェントを作成する最も簡単な方法は、包装クラスregister hereを継承することです.このサブクラスを作成するのはとても簡単なプロセスです.名前を前にリストファイルで宣言したのと同じ種類(例えば、The BackupAgent)を作成して、「Backup AgentHelper」を継承してBackupAgentHelperの方法を上書きすればいいです.
onCreate()方法では、onCreate()オブジェクトが作成される.これらの特定のクラスは、特定のタイプのデータをバックアップするために専用です.Androidフレームは、現在、BackupHelperおよびFileBackupHelperの2つの種類を含む.このようなオブジェクトを作成して、あなたがバックアップしたいデータを指摘したら、SharedPreferences BackupHelperの方法でBackupAgentHelperに追加すればいいです.キーを追加して、データを復元します.ほとんどの場合、全体の実現には十数行のコードが必要です.
次はバックアップゲームの最高スコアファイルの例です.
import android.app.backup.BackupAgentHelper;

 import android.app.backup.FileBackupHelper;





 public class TheBackupAgent extends BackupAgentHelper {

    // The name of the SharedPreferences file

    static final String HIGH_SCORES_FILENAME = "scores";



    // A key to uniquely identify the set of backup data

    static final String FILES_BACKUP_KEY = "myfiles";



    // Allocate a helper and add it to the backup agent

    @Override

    void onCreate() {

        FileBackupHelper helper = new FileBackupHelper(this, HIGH_SCORES_FILENAME);

        addHelper(FILES_BACKUP_KEY, helper);

    }

}
柔軟性を高めるために、addHelper()のコンストラクタは、可変数のファイル名を受け取ることができる.最大サブファイルのゲーム進捗ファイルをバックアップしながらパラメータを追加する方法だけでも大丈夫です.
    @Override

    void onCreate() {

        FileBackupHelper helper = new FileBackupHelper(this, HIGH_SCORES_FILENAME, PROGRESS_FILENAME);

        addHelper(FILES_BACKUP_KEY, helper);

    }
バックアップ構成情報も簡単です.FileBackupHelperを作成する方法と同じFileBackupHelperを作成します.この場合は、構造関数にファイル名を追加するのではなく、あなたのアプリケーションで使用されるshared preferenceグループの名前を追加します.以下の例では、ファイルではなく構成情報として最高得点を記憶する場合、バックアップエージェントヘルプクラスが可能なようになります.
import android.app.backup.BackupAgentHelper;

 import android.app.backup.SharedPreferencesBackupHelper;



 public class TheBackupAgent extends BackupAgentHelper {

     // The names of the SharedPreferences groups that the application maintains.  These

     // are the same strings that are passed to getSharedPreferences(String, int).

     static final String PREFS_DISPLAY = "displayprefs";

     static final String PREFS_SCORES = "highscores";



     // An arbitrary string used within the BackupAgentHelper implementation to

     // identify the SharedPreferencesBackupHelper's data.

     static final String MY_PREFS_BACKUP_KEY = "myprefs";



     // Simply allocate a helper and install it

     void onCreate() {

         SharedPreferencesBackupHelper helper =

                 new SharedPreferencesBackupHelper(this, PREFS_DISPLAY, PREFS_SCORES);

         addHelper(MY_PREFS_BACKUP_KEY, helper);

     }

 }
バックアップエージェントには、任意の多くのバックアップヘルプのインスタンスを追加できますが、バックアップの種類ごとに覚えておくには、一つしかありません.SharedPreferences BackupHelperは、すべてのバックアップファイルを処理し、FileBackupHelperは、shareferenceグループのバックアップが必要です.
四).バックアップの要請
バックアップを要求するには、SharedPreferences BackupHelperの例を作成し、Backup Managerの方法を呼び出します.
import android.app.backup.BackupManager;

 ...



 public void requestBackup() {

   BackupManager bm = new BackupManager(this);

   bm.dataChanged();

 }
この呼び出しは、バックアップマネージャに対して、雲の上にバックアップが用意されているデータがあると通知します.将来のある時間に、バックアップマネージャがバックアップエージェントのdata Changd()方法を呼び出します.あなたのデータが変化した後、この方法を任意の時間で呼び出すことができます.過剰なネットワーク伝送につながる心配はありません.バックアップタスクを実行する前に二回のバックアップ要求を行ったら、最終バックアップは一回だけ実行されます.
五)バックアップからの復帰
一般的には、個人的に回復要求を開始する必要はありません.あなたのアプリケーションがデバイスにインストールされると、バックアップが自動的に実行されます.しかし、個人的にバックアップを回復するためにアクティブにする必要があるなら、onBackup()方法を呼び出すだけでいいです.