07/11/2018, 23:29

Auto Backup trong Android

Đối với một số ứng dụng, người dùng có thể phải bỏ ra kha khá thời gian của mình để có thể tinh chỉnh, tùy chỉnh lại setting của ứng dụng đó. Khi người dùng đổi máy hay up đời lên, việc khôi phục - restore lại các settings cho người dùng là một việc mang lại trải nghiệm khá tuyệt vời cho người ...

Đối với một số ứng dụng, người dùng có thể phải bỏ ra kha khá thời gian của mình để có thể tinh chỉnh, tùy chỉnh lại setting của ứng dụng đó. Khi người dùng đổi máy hay up đời lên, việc khôi phục - restore lại các settings cho người dùng là một việc mang lại trải nghiệm khá tuyệt vời cho người dùng, họ không còn phải loay hoay với việc setting lại, nghĩ lại xem ngày xưa mình đặt như nào. Và điều quan trọng là giảm thiểu tối đa các bước có thể để người dùng có thể khôi phục lại settings như trên devices trước đây của họ. Và bạn có thể sử dụng Auto Backup để có thể restore settings data ngay cả khi người dùng không login vào app của bạn.

Để có thể restore user's settings data trên devices mới, bạn phải đảm bảo rằng có backup các settings user sau:

  • Bất cứ setting nào mà người dùng đã sửa đổi, chẳng hạn như PreferenceScreen
  • Người dùng đã bật hoặc tắt chuông và thông báo
  • Bất kỳ các cờ boolean nào mà sử dụng để tracking việc user có/đã sử dụng hay bỏ qua các bước như: Màn hình Tutorial, Màn hình Introduction, ...

Lưu ý: Auto Backup chỉ hỗ trợ các devives Android 6.0 (API 23) trở lên.

Turn on Auto Backup

Đầu tiên hãy turn on Auto Backup trong app của bạn. Việc turn on Auto Backup được xác định thông qua attribute allowBackup được khai báo trong <application>.

Trong manifests/AndroidManifest.xml:

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        ...
</application>

Ở đây mình sẽ thử chạy sample app để có thể hình dung dễ dàng hơn. Bạn có thể tham khảo sample app tại đây

Login to sample app

Ở trong sample app này ta sẽ thực hiện làm 1 form đăng nhập và hiển thị hint để nhắc nhở người dùng địa chỉ email được đăng nhập lần cuối.

Chúng ta hãy thử login với tài khoản sau:

  • Username: foo@example.com
  • Password: hello

Sau khi login thành công, app sẽ lưu thông tin đăng nhập của bạn vào shared prefs. Trong thực tế auth key sẽ được gen từ username và password, ở đây ta tạm xài theo password.

Manually create and restore a backup

Ở phần này tạm thời chúng ta chưa xài auto, xài tay trước đã. Ta sẽ thực hiện các bước thủ công để tạo backup và restore data đã được backup cho ứng dụng sample.

Check to see if backups are enabled on your current device or emulator

Bước đầu tiên là phải kiểm tra xem thiết bị của bạn có enable backup không đã, phải enable thì mới có thể triển tiếp.

Sử dụng ADB để check hàng:

$ adb shell bmgr enabled
Backup Manager currently disabled

Như này tức là thiết bị của bạn chưa enable backup.

Để có thể enable backup lên bạn vào Settings -> tìm mục Backup -> chọn On, sau đó chọn Account mà bạn muốn sử dụng cho backup.

Sau khi đã thực hiện các bước để enable backup, thực hiện check lại:

$ adb shell bmgr enabled
Backup Manager currently enabled
$ adb shell bmgr list transports
  com.sonyericsson.mtp.extension.backuprestore.transport/.MtpTransport
  android/com.android.internal.backup.LocalTransport
  com.google.android.gms/.backup.migrate.service.D2dTransport
* com.google.android.gms/.backup.BackupTransportService

Ở đây mình đang sử dụng con Sony để test nên sau khi sử dụng command adb shell bmgr list transports nó hiện ra như trên, trên device khác có thể sẽ có 1 vài dòng khác, quan trọng dòng android/com.android.internal.backup.LocalTransport và * com.google.android.gms/.backup.BackupTransportService là được.

Force a backup of your application

Sau khi đã check và enable như bước trên rồi thì chúng ta tiếp tục đến bước backup data cho ứng dụng, cụ thể ở đây là app sample:

$ adb shell bmgr backupnow com.googlecodelabs.example.backupexample
Running incremental backup for 1 requested packages.
Package @pm@ with result: Success
Package com.googlecodelabs.example.backupexample with progress: 1536/1024
Package com.googlecodelabs.example.backupexample with progress: 2560/1024
Package com.googlecodelabs.example.backupexample with result: Success
Backup finished with result: Success

Sau khi chạy command adb shell bmgr backupnow com.googlecodelabs.example.backupexample mà nó hiển thị như trên là xong rồi đó =)) đơn giản phải không             </div>
            
            <div class=

0