티스토리 뷰

Mobile/Android

Data backup

out of coding 2014. 2. 19. 13:51

Android SDK Level8부터는 Databackup이 된다.

머 물론. 구글계정이 연계가 되어 있는 상태에서 말이다.


Data backup은 app의 data 공유를 위한 것이 아닌, 신규 device나 factory reset시에 기존에 저장해 놓은 data를 다시 받기 위한 기능이다.


소스의 구현

1. manifest file에 backup agent 정의


	
		
		
	


2. android backup service에 등록 ( http://code.google.com/intl/ko-KR/android/backup/signup.html에서 발급받도록 한다. )


	<meta-data android:name="com.google.android.backup.api_key" android:value="[자신이 발급받은 키]"/>


3. 저장할 data의 결정

  • shared preferences : 설정값등
  • internal storage : 내부 메모리에 저장되는 data
  • external storage : 외부 메모리에 저장되는 data
  • SQLite database : SQLite를 위한 DB data
  • Network Connection : Network를 통한 data

4. Class의 구현
shared preferences와 internal data의 경우에는 실제 backup을 위한 코드가 필요없어서, BackupAgentHelper를 상속받아 구현해 주면된다.
나머지 사항들은 직접구현... 머 어렵지는 않지.
public class MyBackupAgent extends BackupAgentHelper
{
	static final String PREFS = "user_preferences";
	static final String PREFS_BACKUP_KEY = "prefs";

	@Override
	public void onCreate()
	{
		SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, PREFS);
		addHelper(PREFS_BACKUP_KEY, helper);
	}

	@Override
	public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) throws IOException
	{
		synchronized(MyBackupAgent.class)
		{
			super.onBackup(oldState, data, newState);
		}
	}

	@Override
	public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState) throws IOException
	{
		synchronized(MyBackupAgent.class)
		{
			super.onRestore(data, appVersionCode, newState);
		}
	}
}

5. 테스트

  • Emulator이면서, 2.2이상 기준
  • Command창을 열어준다.
  • > " adb shell bmgr enable true " -> 백업 활성화
  • > " adb shell bmgr backup [package_name] -> Backup Manager queue에 백업 요청함
  • > " adb shell bmgr run " -> 백업 작업 수행
  • > " adb uninstall [package_name] " -> 앱 삭제
  • Device이면서, 2.2이상 기준
  • Android Market이 built-in되어야 함
  • Settings > Privacy > Back up Data, Automatic Restore를 설정

끝.


'Mobile > Android' 카테고리의 다른 글

Hello, Testing  (0) 2014.03.07
Testing in Other IDEs  (0) 2014.03.07
[Android]화면 밝기 관련  (0) 2014.02.10
Testing. Eclipse with ADT  (0) 2014.02.07
Testing. Instrumentation  (1) 2014.02.06
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함