批量插入数据库阻止UI?

时间:2014-09-30 13:41:05

标签: android sqlite user-interface

在我的应用程序中,我从服务器获得响应,并在数据库中插入从服务器响应中获取的值。以下是我的代码:

String sql = "INSERT INTO "+ tableName +" VALUES (?,?,?,?);";
    DatabaseHandler dbHandler = new DatabaseHandler(context);
     final SQLiteDatabase db = dbHandler.getWritableDatabase();
        final SQLiteStatement statement = db.compileStatement(sql);
        db.beginTransaction();
        try {

                statement.clearBindings();

                statement.bindString(2, id);
                statement.bindString(3, type);
                statement.bindString(4, value);

                statement.executeInsert();

            db.setTransactionSuccessful();
        } finally {
            db.endTransaction();
        }

        db.close();

它在我的数据库中快速插入,但我的UI屏幕正在冻结。我尝试在AsyncTask中调用插入代码,但插入需要很长时间。能不能让我知道如何防止我的UI被阻止,还能阻止插入花费很长时间?

谢谢。

1 个答案:

答案 0 :(得分:-1)

我不相信使用AsyncTask会花费太长时间,但如果它正在使用那么它就是一个更好的方法,那么你想要实现的目标 ..那个是" 在数据库中为UI线程上的大量数据执行插入"。

  • 如果您要在UI线程上执行此长时间运行的任务,您的应用程序可能会崩溃。
  • AsyncTask制作UI的原因,以便从{{1}}主题中删除负载。
  • 如果您对设备执行插入所花费的时间非常恼火,您可以尝试启动 IntentService 的替代方案。它会继续在后端继续工作执行其他任务。