Most visited

Recently visited

Added in API level 8

SharedPreferencesBackupHelper

public class SharedPreferencesBackupHelper
extends Object implements BackupHelper

java.lang.Object
   ↳ android.app.backup.SharedPreferencesBackupHelper


这可以结合使用一个辅助类BackupAgentHelper管理的备份SharedPreferences 无论何时执行备份,它都会备份自上次备份操作以来发生更改的所有命名共享首选项。

要使用这个类,应用程序的备份代理类应该扩展BackupAgentHelper 然后,在代理的onCreate()方法中,应该在BackupAgentHelper框架内分配和安装该类的一个实例作为备份/恢复处理程序。 例如,支持具有两组SharedPreferences数据的应用程序的备份和恢复的代理可能如下所示:

 import android.app.backup.BackupAgentHelper;
 import android.app.backup.SharedPreferencesBackupHelper;

 public class MyBackupAgent extends BackupAgentHelper {
     // The names of the SharedPreferences groups that the application maintains.  These
     // are the same strings that are passed to getSharedPreferences(String, int).
     static final String PREFS_DISPLAY = "displayprefs";
     static final String PREFS_SCORES = "highscores";

     // An arbitrary string used within the BackupAgentHelper implementation to
     // identify the SharedPreferenceBackupHelper's data.
     static final String MY_PREFS_BACKUP_KEY = "myprefs";

     // Simply allocate a helper and install it
     void onCreate() {
         SharedPreferencesBackupHelper helper =
                 new SharedPreferencesBackupHelper(this, PREFS_DISPLAY, PREFS_SCORES);
         addHelper(MY_PREFS_BACKUP_KEY, helper);
     }
 }

不需要进一步的实施; BackupAgentHelper机制会根据情况自动将BackupAgent.onBackup()BackupAgent.onRestore()回调分派给SharedPreferencesBackupHelper。

Summary

Public constructors

SharedPreferencesBackupHelper(Context context, String... prefGroups)

构建一个帮助程序,用于备份和恢复给定名称下的 SharedPreferences

Public methods

void performBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)

备份配置的 SharedPreferences组。

void restoreEntity(BackupDataInputStream data)

将还原数据流中的一个实体还原到其正确的共享首选项文件存储区。

void writeNewStateDescription(ParcelFileDescriptor fd)

在恢复操作之后由 BackupAgentHelper调用以写入由助手处理的与数据相对应的备份状态文件。

Protected methods

void finalize()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。

Inherited methods

From class java.lang.Object
From interface android.app.backup.BackupHelper

Public constructors

SharedPreferencesBackupHelper

Added in API level 8
SharedPreferencesBackupHelper (Context context, 
                String... prefGroups)

构建一个帮助器,用于在给定名称下备份和恢复 SharedPreferences

Parameters
context Context: The application Context
prefGroups String: The names of each SharedPreferences file to back up

Public methods

performBackup

Added in API level 8
void performBackup (ParcelFileDescriptor oldState, 
                BackupDataOutput data, 
                ParcelFileDescriptor newState)

备份配置的 SharedPreferences组。

Parameters
oldState ParcelFileDescriptor: An open, read-only ParcelFileDescriptor pointing to the last backup state provided by the application. May be null, in which case no prior state is being provided and the application should perform a full backup.
data BackupDataOutput: An open, read/write BackupDataOutput pointing to the backup data destination. Typically the application will use backup helper classes to write to this file.
newState ParcelFileDescriptor: An open, read/write ParcelFileDescriptor pointing to an empty file. The application should record the final backup state here after writing the requested data to the data output stream.

restoreEntity

Added in API level 8
void restoreEntity (BackupDataInputStream data)

将还原数据流中的一个实体还原到其正确的共享首选项文件存储区。

Parameters
data BackupDataInputStream: An open BackupDataInputStream from which the backup data can be read.

writeNewStateDescription

Added in API level 8
void writeNewStateDescription (ParcelFileDescriptor fd)

在恢复操作之后由BackupAgentHelper调用以写入由助手处理的与数据相对应的备份状态文件。 此处写入的数据将在下次调用performBackup()方法时供助手使用。

即使在还原操作期间从未调用处理程序的方法 restoreEntity()该方法也会被调用。

注意:助手不应关闭或寻找 newState文件描述符。

Parameters
fd ParcelFileDescriptor: A ParcelFileDescriptor to which the new state will be written.

Protected methods

finalize

Added in API level 8
void finalize ()

当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类重写finalize方法来处理系统资源或执行其他清理。

finalize的总体合同是,如果当Java TM虚拟机已经确定不再有任何途径可以通过任何还没有死亡的线程访问该对象时,除了作为动作的结果之外取决于某些其他可以完成的对象或类别的最终定稿。 finalize方法可以采取任何行动,包括使这个对象再次可用于其他线程; 然而, finalize的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。

Objectfinalize方法Object执行特殊操作; 它只是正常返回。 Object子类可能会覆盖此定义。

Java编程语言不保证哪个线程将为任何给定的对象调用finalize方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。

在针对某个对象调用 finalize方法后,将不会采取进一步的操作,直到Java虚拟机再次确定不再有任何途径可以通过尚未死亡的任何线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。

对于任何给定对象,Java虚拟机从不会多次调用 finalize方法。

finalize方法抛出的任何异常 finalize导致此对象的终止被暂停,但会被忽略。

Throws
Throwable

Hooray!