2

バックアップとリカバリを実装したいのですが、onBackup()メソッドが実行されません。マニフェストファイルの私のコードは

<application android:icon="@drawable/icon" android:label="@string/app_name"
        android:backupAgent="MyBackupAgent" android:restoreAnyVersion="true"
        android:allowBackup="true" android:enabled="true">
        <meta-data android:name="com.google.android.backup.api_key"
            android:value="AEdPqrEAAAAIMiLZ2_rMQFv6Huz3BYWpuxfVoK68Wk0CFMiXwA" />
        <activity android:name=".Splash" android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
</application>

Activityバックアップしたいアイテムを追加または更新すると、コードが

BackupManager bm = new BackupManager(this);
bm.dataChanged();

そしてMyBackupAgent私が書いたファイルに

public class MyBackupAgent extends BackupAgent {

    @Override
    public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data,
            ParcelFileDescriptor newState) throws IOException {
        // TODO Auto-generated method stub
        System.out.println("in MyBackupAgent");
    }

    @Override
    public void onRestore(BackupDataInput data, int appVersionCode,
            ParcelFileDescriptor newState) throws IOException {
        // TODO Auto-generated method stub

    }
}

しかし、ここではonBackup()メソッドでは何も出力されないので、onbackup メソッドに入っているかどうかをどのように識別できますか?

4

5 に答える 5

2

コマンドプロンプトで「adb shell bmgr run」を実行してみましたか?

これにより、バックアップ マネージャーはその作業を強制されます。

dataChanged()仕事をスケジュールしているようです。しかし、上記のように強制されない限り、作業は完了しません (永遠に待機します)。

于 2011-10-06T14:17:37.187 に答える
1

これが問題でしょうか?:

バックアップ マネージャだけが、バックアップ エージェントの onBackup() メソッドを呼び出すことができます。アプリケーション データが変更され、バックアップを実行するたびに、dataChanged() を呼び出してバックアップ操作を要求する必要があります (詳細については、バックアップの要求を参照してください)。バックアップ リクエストによって、onBackup() メソッドがすぐに呼び出されるわけではありません。代わりに、バックアップ マネージャは適切な時間待ってから、最後のバックアップが実行されてからバックアップを要求したすべてのアプリケーションのバックアップを実行します。

http://developer.android.com/guide/topics/data/backup.html#BackupAgent

于 2011-10-06T08:27:10.327 に答える
0

私はこれと同じ問題を抱えています。「adb shell bmgr run」を実行すると、バックアップは正常に行われますが、dataChanged() で何も実行できません。バックアップは adb コマンドを介して実行されるため、すべてが正しく構成されています。スケジュールするのに本当に永遠にかかるのですか?APK を携帯電話にコピーしましたが、dataChanged() はそこでも何もしませんでした。バックアップが成功したことをユーザーに報告できることを望んでいましたが、スケジュールが隠されているため、これは不可能のようです (実際にそれが起こっている場合)。

于 2011-10-28T03:39:21.787 に答える
0

試してみたいサンプルです:

http://www.edumobile.org/android/android-development/backup-manager/

編集: 申し訳ありませんが、XML を読み間違えました。このタグを削除してみてくださいManifest

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

@p/s: コードを共有していただけると、少しは助かるかもしれません。

于 2011-10-06T08:30:14.173 に答える