Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android BackupAgent从未调用过大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试实现自定义BACkupAgentHelper来备份我的应用程序的数据库文件.我已经多次浏览过文档但是每当我尝试强制备份时,都不会调用Create / onBACkup / onRestore上的BACkupAgentHelper.

@H_948_5@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>" />
@H_948_5@myBACkupHelper:

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 transportservice无法运行,但将其更改为内部localtransport

./adb sHell bmgr transport android/com.android.internal.BACkup.LocalTransport

解决了我的问题,现在日志出现了.

大佬总结

以上是大佬教程为你收集整理的Android BackupAgent从未调用过全部内容,希望文章能够帮你解决Android BackupAgent从未调用过所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。