0

ローカルのsqliteデータベースをリモートのmysqlデータベースと同期する必要があります。私はさまざまなテストXMLRPCJSONRPC行っており、そうするためのプロジェクトを行っています。

テーブルごとにまだ同期されていないすべてのエントリを含むパケットを送信します。

これらのRPCプロジェクトが解析しているとき、データlogcatはで埋められGC_EXPLICITます。

GC_EXPLICITは、ヒープ内の最高水準点によってトリガーされるのではなく、ガベージコレクターが明示的に収集するように要求されたことを意味します。いたるところに発生しますが、スレッドが強制終了されたとき、またはバインダー通信が切断されたときに発生する可能性があります。〜ロバート

パケットからエントリが読み取られた直後に目的のアクションを実行するようにXMLRPCプロジェクトを変更し、同じオブジェクト変数を使用して次のエントリをインスタンス化しようとしました。

ただし、これはガベージコレクタへの収集要求を解決しません。

何か案が?チップ?提案?

4

1 に答える 1

0

私は数日前に問題を解決しました。

Alex(プロジェクト)によって作成されたAndroidJSONRPCモジュールを使用しています。

モジュールがJSONを解析する部分を削除しました。そして、正規表現を使用して独自の解析ルーチンを作成しました。このモジュールは、JSONオブジェクトを作成する代わりにSQLiteクエリも実行します。

私が変更したもう1つの点は、モジュールが最大1000エントリの複数のパケットを受け入れて受信することです。

コードは非常に高速で、3000エントリの同期に30分かかりましたが、今では3分しかかかりません。コードの代わりにこの情報を投稿する理由は、コードが非常にプロジェクト固有であるためです。

ループする方法と1000を超えるオブジェクトを割り当てない理由については、Androidのパフォーマンスドキュメントに記載されています。

于 2011-04-26T10:39:57.363 に答える