본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] Data Backup 하기 ( Backup APIs )

by 돼지왕 왕돼지 2012. 11. 14.
반응형




출처 android developer


Data Backup 하기 ( Backup APIs ) - Using the Backup API

- 유저가 새로운 단말을 구입하거나 단말 reset을 하게 되면, 그들은 Google Play 가 원래 사용하던 app 을 재설치할때 원래 사용되던 데이터들도 함께 restore 되기를 바란다. 하지만 기본적으로는 이 현상은 일어나지 않는다.


- user data 가 megabyte 이하의 작은 용량이라면, 예를 들어 preferences나 note, game high score 과 같은, Backup API 를 통해 backup 과 restore 를 지원할 수 있다.

Register for the Android Backup Service

- Android Backup API 를 사용하기 위해서는 Android Backup Service 에 등록을 해야 하며, 여기서 발급하는 api key 를 manifest 에 기록해주어야 한다. 

- Google Backup Service 가입 페이지




Configure Your Manifest

- 다음과 같이 manifest에 backupAgent 를 명시해주어야 한다. 

<application android:label="MyApp"

             android:backupAgent="TheBackupAgent">

    ...

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

    android:value="ABcDe1FGHij2KlmN3oPQRs4TUvW5xYZ" />

    ...

</application>




Write Your Backup Agent

- Backup agent 를 구현하는 가장 쉬운 방법BackupAgentHelper 를 상속하는 클래스를 만들고 onCreate() 를 override하는 것이다.
 

- onCreate() 에서는 BackupHelper 를 만든다.  안드로이드 framework 는 현재 2가지 종류의 helper 를 제공한다. FileBackupHelper 와 SharedPreferencesBackupHelper. Helper 를 만든 후에 저장하고 싶은 데이터를 addHelper() 함수를 통해 backup 할 helper들을 추가해 주면 된다.

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);

    }

}

 
다음과 같이 여러 파일을 한번에 저장할 수도 있다.

   @Override

    void onCreate() {

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

        addHelper(FILES_BACKUP_KEY, helper);

    }




Request a Backup

- Backup 을 하기 위해서는 BackupManager instance를 만들고, dataChanged() 를 호출한다.

 import android.app.backup.BackupManager;

 ...

 public void requestBackup() {

   BackupManager bm = new BackupManager(this);

   bm.dataChanged();

 }


이는 backup manager 에게 cloud  back up 할 데이터가 준비되었다고 알리는 것. 나중에 BackupManager  onBackup() 함수를 부른다. 만약 실제 백업이 되기 전에 2 dataChanged() 를 호출하면, backup 은 실제로 최종것 한번만 적용된다.




Restore from a Backup

- 일반적으로 restore 를 직접 요청하는 일은 없고, 앱이 단말에 설치될 때 자동으로 restore 가 일어난다. 하지만 직접 요청이 필요할 경우에는 requestRestore() 를 호출한다.



도움이 되셨다면 손가락 꾸욱~ ( 로그인 필요 x )



반응형

댓글