Android API 8供了備份和恢復應用程序數據的功能,用戶可通過adb backup進行備份,備份文件存放在電腦上自定義位置,再通過adb restore來進行對應用數據的恢復。這種恢復不受限于手機,可將手機A上的備份數據,在裝有相同APP的手機B上進行恢復。 Android支持兩類數據備份: - SharedPReferences文件:通過 SharedPreferencesBackupHelper備份 - 其他文件: 通過FileBackupHelper 備份,需要注意的是,一般備份小的配置文件。
一、演示思路 編寫一個簡單的登陸頁面,只包含賬號、密碼輸入框,及登陸按鈕。 
頁面啟動時,從SharedPreferences查詢賬號密碼,顯示到頁面,點擊“ENTER”按鈕時,向SharedPreferences存入新的賬號密碼。
演示步驟: 1、點擊“ENTER”按鈕后,將賬號密碼存入SharedPreferences。 2、備份數據 3、清除APP數據 4、重啟APP,看數據是否被清除 5、還原數據 6、重啟APP,看數據是否被恢復
二、代碼 數據備份不需要權限聲明。默認情況下,是允許數據備份的。 如果要禁用備份功能,需要在application標簽下聲明:
android:allowBackup="false"再看看activity的代碼:
/** * 測試android:allowBackup數據備份。 * 備份:adb backup -f allowBackup.ab -noapk com.example.mytestpro * 恢復:adb restore allowBackup.ab */public class MainActivity extends Activity implements OnClickListener{ public static final String NAME = "NAME"; public static final String PWD = "PWD"; public static final String SP_NAME = "TEST_SP"; private EditText et_name; private EditText et_pwd; private Button btn_enter; private SharedPreferences sp; private Editor editor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sp = getSharedPreferences(SP_NAME, Context.MODE_PRIVATE); editor = sp.edit(); initView(); } private void initView() { et_name = (EditText) findViewById(R.id.et_name); et_pwd = (EditText) findViewById(R.id.et_pwd); btn_enter = (Button) findViewById(R.id.btn_enter); btn_enter.setOnClickListener(this); if (sp != null) { et_name.setText(sp.getString(NAME, "")); et_pwd.setText(sp.getString(PWD, "")); } } @Override public void onClick(View v) { editor.putString(NAME, et_name.getText().toString()); editor.putString(PWD, et_pwd.getText().toString()); editor.commit(); Toast.makeText(this, "Enter an activity...", Toast.LENGTH_SHORT).show(); }}布局文件非常簡單,此處不在給出。
三、測試操作 1、準備 安裝app,并輸入賬號密碼,點“ENTER”出現上面展示的頁面。
2、備份 執行備份命令:
此時Android會彈出提示窗口: 
密碼可以為空,即不加密。點擊備份,等待備份完成。我的備份文件allowBack.ab放在PC默認用戶路徑下。 
3、清空APP數據 清空APP的數據,重新進入頁面會看到記錄的賬號密碼都丟失了: 
4、還原APP數據 使用備份的文件allowBack.ab,恢復APP數據:
此時Android系統也會彈出恢復提示:
如果備份時沒有輸入密碼,此處也可以不輸入。 點擊恢復后,APP需要重啟,重啟之后就會看到本文第一張圖的頁面(此處不再貼圖),證明數據恢復成功。
注意: · 如果在系統彈出的備份或恢復頁面等待太久,可能出現備份或恢復失?。赡苁俏覝y試機的問題)。 · 在android:allowBackup=”false”時,備份依然能成功,但是恢復必定失敗。
以上就是簡單的APP數據備份及還原操作。 Android還提供了定義備份還原的API,我們可以自定義這個操作過程及操作范圍。
四、自定義備份 可以通過使用BackupAgentHelper類來定義APP數據備份,如名,這是一個備份的代理幫助類。要使用這個代理,需要在AndroidManifest.xml中注冊。 詳細可以參考這篇博客
新聞熱點
疑難解答