【问题标题】:How to correctly perform SQL queries in background thread?如何在后台线程中正确执行 SQL 查询?
【发布时间】:2016-08-21 01:26:34
【问题描述】:

我有一个ViewPager,其中一个页面包含从 SQLite 数据库填充的List。这个List 是通过首先抓取Cursor 来填充的,然后将所有各种字段提取到对象中,然后我将它们添加到List 中。

但是我也读到我应该在另一个线程中执行 SQL 操作,以免整个应用程序滞后。

这样做的正确方法是什么?我的 SQLite 类是作为单例实现的,因此当我需要访问权限时调用 MyDatabaseClass.getInstance(context) 就足够了。

【问题讨论】:

  • 异步任务?就像你曾经做过的 HTTP 调用一样
  • @cricket_007 我还没做

标签: java android sql multithreading sqlite


【解决方案1】:

应该像处理任何其他后台操作一样处理 SQL 后台查询。您可以使用例如Threads 或 AsyncTasks 来执行它们。


线程示例

public void performActionAsync(){
    new Thread(new Runnable(){
        @Override
        public void run(){
           performAction();
        }
    }).start();
}

private void performAction(){
    //perform actions as normal
}

【讨论】:

  • 所以在performAction 内我会做数据库读取和列表填充之类的事情?
  • 完全正确。事实上,这可能只是您已经拥有的方法。
  • 但是我需要小心不要运行 performActionAsync() ,然后在它之后假设列表已填满?
  • 没错。当异步操作完成时,您可以使用侦听器模型或事件总线来通知组件。
  • 我将如何使用侦听器模型来做到这一点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
  • 2015-04-17
  • 2014-11-16
  • 2021-12-08
相关资源
最近更新 更多