1

ドキュメントとサンプル BackupRestore アプリを確認し、独自のテスト アプリを実装して作成しandroid:backupAgentました。BackupAgent私の主な関心事はデータベースからデータをバックアップできることなので、クラスを拡張しました。単純な概念実証アプリをこの機能で動作させることすらできないようです。

非常に単純にするために、マニフェストでandroid:backupAgentasを宣言しました。MyBackupAgent次に、クラス MyBackupAgent.java を作成し、BackupAgent. 次に、例やドキュメントと同じように、クラス内でメソッドonBackup()とメソッドのオーバーライドを作成しました。関数が呼び出されたときに LogCat 内で識別できるように、各関数の最初に呼び出しを追加しました。同様に、これらの両方にブレークポイントを設定します。次に、データベースをバックアップするコードを実装しました。onRestore()MyBackupAgentLog.i()

2.2w/Google API を使用してエミュレータ イメージを作成し、[アカウントと同期] の下に gmail アカウントを追加しました。adb コマンドを実行して、有効bmgr化、アプリのバックアップ、バックアップの実行、アプリのアンインストール、アプリの再インストールなどを行います。または関数Log.i()のいずれかのコマンドからログ ファイルにメッセージが表示されることは一度もありません。onBackup()onRestore()

2.2 を実行している Evo 4g で再試行しました。同じ結果です。バックアップ マネージャがクラスの関数onBackup()onRestore()関数を呼び出しているようには見えません。MyBackupAgent

ログに表示される唯一の奇妙なメッセージは、BackupManagerService「バックアップパスですが、e = true p = false」というものです。これは、アプリをバックアップする ADB コマンドに応答したものだと思います。

助言がありますか?and関数Log.i()内のステートメントがLogCat に表示されると仮定するのは間違っていますか?onBackup()onRestore()

4

3 に答える 3

6

この出力Backup pass but e=true p=falseは、バックアップ マネージャが有効になっている ( e=true) が、プロビジョニングされていない( ) ことを意味しp=falseます。

これらの条件が両方とも満たされている場合にのみ、バックアップが実行されます。したがって、何らかの理由で、バックアップマネージャーがエミュレーターイメージにプロビジョニングされていません。コードを掘り下げた後、起動時に自動プロビジョニングされる必要があることに気付きました ( DefaultActivity )

I/ActivityManager(   73): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.android.sdksetup/.DefaultActivity } from pid 0

新しいエミュレータ イメージを作成したところ、問題なく動作しました。

于 2011-01-09T13:12:48.283 に答える
3

電話の設定を確認してください。syncronization-service が無効になっている場合、Data Backup API によるバックアップは機能しません。

于 2012-10-05T13:46:10.040 に答える
3

また、「新しい」バックアップ マネージャ サービスを使用しようとしましたが、常に次のエラー メッセージが表示されました。

12-01 09:58:54.420: WARN/BackupTransportService(9965): Unknown package in backup request: @pm@
12-01 09:58:54.450: WARN/BackupTransportService(9965): Not ready for backup request right now: [OperationScheduler: enabledState=false lastSuccess=2010-10-07/09:33:51 moratoriumSet=2010-12-01/09:53:32 moratorium=1970-01-01/01:00:00 trigger=1970-01-01/01:00:00]
12-01 09:58:54.450: WARN/PerformBackupThread(9965): Backup pass unsuccessful, restaging

これが何を意味するか分かる人いますか???

次のコマンドでバックアップ トランスポートをローカル バージョンに変更した場合

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

すべてがうまく機能します。だから私のコードの問題ではないと思います...

よろしく!

于 2010-12-01T09:57:16.767 に答える