출처 : 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() 를 호출한다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] nine patch 를 background 로 사용했을 때 문제점 (0) | 2012.11.15 |
---|---|
Activity 최초 생성은 portrait 로 진입하고, Sensor 값에 따라 rotate 를 지워하는 방법. (0) | 2012.11.14 |
[android] animation gif 출력하기. (0) | 2012.11.14 |
[android] Custom Attribute 를 style 정의하는 방법 (0) | 2012.11.14 |
XMPP ( eXtensible Messaging and Presence Protocol ) (0) | 2012.11.13 |
댓글