(1/3)Androidエミュレータで使えるbmgrコマンドの使い方やバックアップサービスへの登録方法に加え、サンプルを通じて、アプリにバックアップ/レストア機能を組み込む方法などを解説します。});アプリのデータをバックアップ/レストアできると、機種変更時も安心アプリが“設定”を持つような場合、またはゲームのハイスコアのような情報を保持する必要がある場合、開発者は「SharedPreferences」「File」「Database」などで、それらの状態を永続化することがあると思います。したAndroid内のストレージに保存するデータは、アプリのアンインストール時に削除され、再インストール時にはなくなってしまっています。そのため、機種変更などでデータを移行できませんでした。8)からは「android.app.backup」パッケージで提供されるバックアップ/レストア機能によって、グーグルの提供するクラウドサーバを使うことで解決できるようになりました。2.2が登場した際の機能紹介でも取り上げています。今回は、そんなAndroidアプリのデータをバックアップ/レストアするためのAPIについて、サンプルアプリを用いて具体的な使用方法を解説します。バックアップ/レストア用サンプルアプリアプリは以下よりダウンロードしてください。BackupExample.zipアプリの仕様は以下の通りです。Storeにアップロードしてグーグルのクラウドサーバにバックアップを取ることはできません。その代わり、エミュレータ上で手動によるバックアップ/レストアコマンドが実行できます。コマンドプロンプトを開いて、以下のように入力します。runこれでバックアップ処理が走り、エミュレータがデバイスの外にファイルをバックアップします。この状態でアプリをアンインストールして、再インストールすると、自動的にバックアップデータがレストアされます(※デバイスの設定による)。アプリの「Restore」ボタンでも強制的にレストア可能です。以下のコマンドでもレストアを強制的に行えます。com.example.android.backup今回のアプリは、アプリ起動中にレストア処理が実行されても、すぐに画面に反映するように作ってあります。「bmgr」コマンドとバックアップのライフサイクル先に少し紹介したエミュレータの「bmgr」コマンドは、バックアップ/レストアを実装したアプリのテストに役立ちます。このコマンドとバックアップ処理のライフサイクルについて説明します。通常は、アプリからバックアップ対象のデータが変更されたことをBackupManagerに通知します。今回のアプリでは、それをボタンで実装しているので、任意のタイミングで通知できますが、実際のアプリではデータが変更されるタイミングを制御できない可能性があります。した場合に、以下のコマンドでデータが変更されたことをBackupManagerに通知できます。<package>このコマンドも、BackupManagerへのデータ変更通知である「BackupManager.dataChanged()」メソッドも、それ自体は何も行わず、「自分で実装したバックアップエージェント(後述)を実行してください」という依頼をするだけです。バックアップがいつ実行されるかは分かりません。強制バックアップこれを強制的にバックアップ実行するのが、以下のコマンドです。backupでバックアップ指示をしたものだけがバックアップされる」とのことなのですが、実際にはそれらを呼び出していなくてもバックアップは行われるようです。強制レストアデータのレストアは、アプリの再インストール時には自動的に行われますが、以下のようにコマンドを入力して強制的に行うことも可能です。restore」コマンドは「BackupManager.requestRestore(RestoreObserver)」メソッドと同じです。backupがいつか行われる処理の依頼であるのに対し、restoreは即時実行です。これは、現在保持しているデータを破棄して、バックアップ状態に戻すことを意味しており、ユーザーデータが消失する危険を伴います。アプリの初回起動時に、端末が自動レストア設定になっていない場合に使用するのが安全で合理的だと思います。一度データをバックアップすると、アプリをアンインストールしてもそのデータは残ったままになります。保存データの形式が変わったり、テストで最初からやり直したいような場合、以下のコマンドでエミュレータに保持しているバックアップデータを削除できます。<package>デバイスのバックアップ設定の確認・変更また、コマンドでデバイスのバックアップ設定の確認・変更が行えます。data」のチェック状態を取得できます。enabled以下のコマンドで、チェック状態を変更できます。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。