gpt4 book ai didi

multithreading - 黑莓线程卡在SQLite语句上准备

转载 作者:行者123 更新时间:2023-12-03 18:31:52 26 4
gpt4 key购买 nike

我正在开发一个实现EditField的应用程序,您可以在其中键入单词,并且在键入应用程序时将过滤屏幕上显示的内容。

为此,我在用户键入时启动了一个新线程。该线程从SQLite表中提取信息,然后将其显示在UI上。

我在应用程序中使用SQLite做其他事情,每个语句都很好用。

问题是,当我在Filtering线程中使用Statement.prepare()方法时,它挂起了!

为了简化此过程,假设用户在EditField中仅键入了1个字母。

代码的想法是这样的:

我在用户键入字母后启动线程:

            mThread = new Thread(){                 
public void run(){filtrarListaRecolecciones();}
};
mThread.setPriority(Thread.MAX_PRIORITY);
mThread.start();

在filtrarListaRecolecciones我运行:
mStatement = mBD.createStatement("SELECT COUNT(*) FROM Recolecciones WHERE Nombre LIKE '%a%' AND Status=3");
mStatement.prepare();

并且线程卡在prepare语句上。

它通常在大约1分钟后获得结果,但是现在挂起了。

该表只有1条记录,因此不应该这样。

任何帮助将不胜感激!

谢谢!

最佳答案

Blackberry中SQLite的问题在于,您无法通过线程共享SQL连接,您必须连接到数据库文件,查询并关闭同一线程中的所有线程。

SQLite是线程安全的,但前提是您通过不同的线程使用不同的连接对象。

关于multithreading - 黑莓线程卡在SQLite语句上准备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3160407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com