デバイスの機能をテストしています。デバイス内に保存できるデータのサイズ、データの取得速度、検索の速度などを顧客に示します。
コンテンツ プロバイダを使用して、product
列数の少ないデータベース テーブルにアクセスしています。テスト レコードを挿入する際の余分な通信を避けるために、コードは既にコンテンツ プロバイダーに移動しています。次のコードは、アクティビティからメニューを介して呼び出され、テーブルにテスト コンテンツを入力します。
Uri uri = Uri.parse(DemoContentProvider.PRODUCTS_CONTENT_URI + "/insertdemo");
getContentResolver().insert(uri, null);
URI はコンテンツ プロバイダーのメソッドで認識され、.insert
(同じコンテンツ プロバイダーの) 次のプライベート メソッドが呼び出されてテーブルに入力されます (10 万のアイテムに注意してください)。
private void insertDemoProducts() {
for (int i = 1; i <= 100000; ++i) {
String id = Integer.toString(i);
insertProduct(id, "Test product " + id, "100", "75.50", "70.27");
}
}
内部insertProduct()
は次のようになります。
private void insertProduct(String code, String name, String stock,
String price, String listprice) {
SQLiteDatabase sqlDB = database.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(ProductTable.COLUMN_CODE, code);
values.put(ProductTable.COLUMN_NAME, name);
values.put(ProductTable.COLUMN_STOCK, stock);
values.put(ProductTable.COLUMN_PRICE, price);
values.put(ProductTable.COLUMN_LISTPRICE, listprice);
sqlDB.insert(ProductTable.TABLE_PRODUCT, null, values);
}
機能しますが、 「永遠に」かかります。どうすれば速くなりますか?テーブルを埋めるための、あなたが知っている最速の方法は何ですか?
考慮すべきいくつかの数字: 1000 個のアイテムの作成には約 20 秒かかります。