java - 安卓 : Loading data from XML to SQLite take very long time

标签 java android xml performance sqlite

我有一个非常大的表,有 300,000 条记录 我正在从 XML 文件加载到 SQLite,

不幸的是,这花了非常非常长的时间(花了 15 分钟然后我不得不停止)。

这正常吗?

我的代码有什么问题吗?

如何加快速度?

谢谢

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_filter);

        new Thread(new Runnable() {
            public void run() {
                FillLocations();
            }
        }).start();

}




private void FillLocations()
{
    OpenDB();
    Resources res = getResources();
    ContentValues _Values = new ContentValues();

    //Open xml file
    XmlResourceParser _xml = res.getXml(R.xml.locations);
    try
    {
        //Check for end of document
        int eventType = _xml.getEventType();
        while (eventType != XmlPullParser.END_DOCUMENT) {
            //Search for record tags
            if ((eventType == XmlPullParser.START_TAG) &&(_xml.getName().equals("Cities"))){
                //Record tag found, now get values and insert record
                String City = _xml.getAttributeValue(null, "City");
                String Country = _xml.getAttributeValue(null, "Country");
                String Time = _xml.getAttributeValue(null, "Time");
                _Values.put("City", City);
                _Values.put("Country", Country );
                _Values.put("Time", Time);
                db.insert("Locations", null, _Values);
            }
            eventType = _xml.next();
        }
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

最佳答案

试试这个代码:

在 while 循环beginTransaction之前以及成功插入所有行之后endSuccessfullTransaction

public static void beginTransaction()
{
    final SQLiteDatabase db = openDatabase();
    if (db != null)
    {
        db.beginTransaction();
    }
}

public static void endSuccessfullTransaction()
{
    final SQLiteDatabase db = openDatabase();
    db.setTransactionSuccessful();
    db.endTransaction();
}

关于java - 安卓 : Loading data from XML to SQLite take very long time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24670277/

相关文章:

java - 如何在 ListView 中搜索有关使用 fragment 布局的信息

java - 创建按钮网格

Java:静态与内部类

java - 多模块 Spring Boot 和启动类

安卓应用订阅

android - 打开应用后,ANDROID应用会停止崩溃,以提供消息 “HAS STOPPED WORKING”

xml - 在 perl 中使用 libXML 将字符串转换为散列

java - Android XML 的字符串和整数混合数组?

java - java util 类中带有 BASE64 的 SHA1 无法生成正确的密码

java - 我的程序正在访问哪些库?