“SQLitedatabase操作(特别是打开或创建数据库)需要很多时间才能完成,所以你应该异步执行数据库事务”。
我在“专业Android 4应用程序开发”中阅读了这一行。
但是我尝试,它不需要很多时间。 谁能告诉我真相?
以下是一个例子。 THS!
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import db.Books;
public class MainActivity extends Activity
{
private TextView tvTest;
private static final String DB_COLUMN1 = "title";
private static final String DB_COLUMN2 = "value";
private static final String TABLE_NAME = "mytable";
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvTest = (TextView)findViewById(R.id.tv_test);
System.out.println("Time1:"+ System.currentTimeMillis());
// The book is a class that extends SQLiteOpenHelper
Books books = new Books(this,"mybook",null,1);
db = books.getReadableDatabase();
System.out.println("Time2:"+ System.currentTimeMillis());
}
}
答案 0 :(得分:1)
对于一个不涉及太多磁盘I / O的简单数据库,它并不重要,因为它可能是您测试程序中的情况。
打开数据库本身并不需要太多I / O.但是,如果数据库尚不存在,则打开数据库将创建它。
创建数据库可能会花费大量时间,尤其是涉及到大量I / O时。从资产复制预填充数据库或运行大量SQL查询以在代码中填充数据库可能需要花费大量时间。
在UI线程上不做任何可能耗时的I / O是一个好习惯。
答案 1 :(得分:0)
通常我们不需要花太多时间来异步创建它。这是一个很好的做法。但我对12个应用程序的体验并不一定需要在AsyncTask中创建