gpt4 book ai didi

Android BackupAgent 从未调用过

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:30 25 4
gpt4 key购买 nike

我正在尝试实现自定义 backupAgentHelper 来备份我的应用程序的数据库文件。我已经多次浏览文档,但每当我尝试强制备份时,Create/onBackup/onRestore 上的 backupAgentHelper 永远不会被调用。

Manifest有以下正在申请中:

android:allowBackup="true"
android:backupAgent="myBackupHelper"
android:restoreAnyVersion="true"

和元数据

    <meta-data 
android:name="com.google.android.backup.api_key"
android:value="<my-api-key>" />

我的备份助手:

public class myBackupHelper extends BackupAgentHelper{

public static String DATABASE_NAME = "db.dat";

@Override
public void onCreate(){
log.d("Backup oncreate called");
FileBackupHelper hosts = new FileBackupHelper(this, this.getExternalFilesDir(DATABASE_NAME).getAbsolutePath());
addHelper(DATABASE_NAME,hosts);
}

@Override
public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) {
log.d("backup onbackup called");
try {
//class is the lock since we are using static synchronized methods to read/write
synchronized (DBManager.class) {
super.onBackup(oldState, data, newState);
log.d("Backedup");
}
} catch (IOException e) {
log.d("Backup error, Unable to write to file: " + e);
}
}

@Override
public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor newState){
log.d("Backup onrestore called");
try {
//class is the lock since we are using static synchronized methods to read/write
synchronized (DBManager.class) {
super.onRestore(data, appVersionCode, newState);
}
} catch (IOException e) {
log.d("Backup error, Unable to read from file: " + e);
}
}

我在 mainactivity 中初始化 BackupManager 如下:

BackupManager bm = new BackupManager(getApplicationContext());

并在数据库发生变化时调用bm.dataChanged();

在测试中,我使用adb强制备份:

./adb shell bmgr backup com.test.android.backuptest
./adb shell bmgr run

但是日志永远不会被命中,当我重新安装时,数据永远不会恢复。

注意:备份和恢复设置已启用,设备已超过所需的 api 8,所以我不知道为什么它没有被击中!

最佳答案

我的 backupAgentHelper 函数从未被调用的原因是因为正在使用传输。做

./adb shell bmgr list transports

显示

android/com.android.internal.backup.LocalTransport
*com.google.android.gms/.backup.BackupTransportService

出于某种原因,goodle 传输服务无法正常工作,但将其更改为内部本地传输

./adb shell bmgr transport android/com.android.internal.backup.LocalTransport

解决了我的问题,现在显示了日志。

关于Android BackupAgent 从未调用过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29615952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com