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。
Public constructors |
|
---|---|
SharedPreferencesBackupHelper(Context context, String... prefGroups) 构建一个帮助程序,用于备份和恢复给定名称下的 |
Public methods |
|
---|---|
void |
performBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) 备份配置的 |
void |
restoreEntity(BackupDataInputStream data) 将还原数据流中的一个实体还原到其正确的共享首选项文件存储区。 |
void |
writeNewStateDescription(ParcelFileDescriptor fd) 在恢复操作之后由 |
Protected methods |
|
---|---|
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface android.app.backup.BackupHelper
|
SharedPreferencesBackupHelper (Context context, String... prefGroups)
构建一个帮助器,用于在给定名称下备份和恢复 SharedPreferences
。
Parameters | |
---|---|
context |
Context : The application Context |
prefGroups |
String : The names of each SharedPreferences file to back up |
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. |
void restoreEntity (BackupDataInputStream data)
将还原数据流中的一个实体还原到其正确的共享首选项文件存储区。
Parameters | |
---|---|
data |
BackupDataInputStream : An open BackupDataInputStream from which the backup data can be read. |
void writeNewStateDescription (ParcelFileDescriptor fd)
在恢复操作之后由BackupAgentHelper
调用以写入由助手处理的与数据相对应的备份状态文件。 此处写入的数据将在下次调用performBackup()
方法时供助手使用。
即使在还原操作期间从未调用处理程序的方法 restoreEntity()
该方法也会被调用。
注意:助手不应关闭或寻找 newState
文件描述符。
Parameters | |
---|---|
fd |
ParcelFileDescriptor : A ParcelFileDescriptor to which the new state will be written. |
void finalize ()
当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类重写finalize
方法来处理系统资源或执行其他清理。
finalize
的总体合同是,如果当Java TM虚拟机已经确定不再有任何途径可以通过任何还没有死亡的线程访问该对象时,除了作为动作的结果之外取决于某些其他可以完成的对象或类别的最终定稿。 finalize
方法可以采取任何行动,包括使这个对象再次可用于其他线程; 然而, finalize
的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。
类Object
的finalize
方法Object
执行特殊操作; 它只是正常返回。 Object
子类可能会覆盖此定义。
Java编程语言不保证哪个线程将为任何给定的对象调用finalize
方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。
在针对某个对象调用 finalize
方法后,将不会采取进一步的操作,直到Java虚拟机再次确定不再有任何途径可以通过尚未死亡的任何线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。
对于任何给定对象,Java虚拟机从不会多次调用 finalize
方法。
由 finalize
方法抛出的任何异常 finalize
导致此对象的终止被暂停,但会被忽略。
Throws | |
---|---|
Throwable |