sql >> データベース >  >> RDS >> SQLite

Androidのsqliteデータベースに大量のデータを挿入する方法

    ご提案のとおり、行数は膨大です。AsyncTaskは使用しないことをお勧めします。 、アクティビティのライフサイクルに関連付けられていないため、つまり、アクティビティを開始したアクティビティが停止した場合、AsyncTaskを意味するわけではありません。 同様に停止するため、AsyncTaskを開始しようとした場合、および別のAsyncTaskを再起動したときに、画面の回転や戻るキーが押されたなどのアクティビティが停止した場合 すでに実行されているAsyncTaskにリンクされるのではなく、生成されます 。したがって、同じ操作を複製します。

    したがって、全体として、次のアプローチをお勧めします

    (A)

    1. IntentServiceを作成します 、handleIntent() apiはすでにワーカースレッドで実行されているため、何も心配する必要はありません。キュー内のすべてのメッセージが終了すると、APIは自動的に停止するため、リソースのリークについてはまったく心配しません。

    2. 行を一括で挿入するためのロジックを記述し、同じためにコンテンツリゾルバーbulkInsert()APIを使用します。バッチごとに100roesで挿入することをお勧めします。ロールバックとエラーチェックを実装して、挿入が正常に行われることを確認できます。

    3. すべての挿入が完了したら、ハンドラーとメッセンジャーを使用してUIにポストバックできます。

    これらすべてで、2つの大きな課題を達成できます

    1. UIをハングアップせず、可能なANRを回避します
    2. 戻るキーが押された場合でも、バックグラウンドタスクで実行されたときにdb操作がスムーズに実行されるようにします。


    1. MySQLでテーブルのサイズを取得する方法

    2. CSVデータをPostgreSQLデータベース(リモートデータベース)に挿入する方法

    3. Oracle PL /SQLはサーバーのIPv4を取得しますか?

    4. SQLServerのパフォーマンスTOPCPUクエリ-1