我应该在我自己的SQLite数据库中执行插入,删除,更新AsyncTaskLoader

时间:2017-08-25 12:25:22

标签: android sqlite android-contentresolver asynctaskloader

我阅读了很多帖子,告诉他们不应该在主线程上执行长时间的操作(比如阅读DB)。

到目前为止,我使用了CursorLoader(用于“阅读”ContentResolver)和AsynkTaskLoader(用于“阅读”我自己的SQLite数据库)。

我知道要在Insert Delete上执行UpdateContentResolverAsyncQueryHandler“。

我的问题是:在我自己的SQLite数据库上执行InsertDeleteUpdate的最佳方法是什么?

我应该只在loadInBackground()的方法AsyncTaskLoader内执行这些操作吗?

谢谢

2 个答案:

答案 0 :(得分:1)

如果您的查询简单并且没有太多时间执行,那么您只需在主线程中使用它。

如果您正在进行大数据处理,那么您有两种选择。

  1. 的AsyncTask
  2. 如果要在操作后更新UI,可以使用 AsyncTask 在后台线程中执行该过程,并将结果传递给主线程。有关 AsyncTaksk 的详情,请点击here

    2 <强>发

    如果在操作后没有更新UI的目的,您只需使用线程即可。

答案 1 :(得分:1)

您可以使用后台处理程序线程。

private Handler mHandler = null;  // global variable
private HandlerThread mHandlerThread = null; // global variable

//在onCreate()或代码中的其他位置创建实例,以便将其称为一个。如果需要,你也可以单独使用它,但这不是正确的方法。

    mHandlerThread = new HandlerThread("HandlerThread");
    mHandlerThread.start();
    mHandler = new Handler(mHandlerThread.getLooper());

//执行后台操作,如:

handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                       // Do background work here.

                   }
                }, 2000);