我几周前发布了一个应用程序,我的很多用户都抱怨应用程序的速度很慢。 当我测试我的应用程序时,我使用的是平板电脑,它运行正常,没有任何问题。
现在我在Android 2.2上的模拟器上测试了应用程序,看到应用程序非常慢,同时从我的SQLite数据库加载一些数据。 我发现Cursor.moveToFirst()方法非常慢并迫使模拟器冻结大约1分钟。这可能是为什么我的用户告诉我他们打开此活动时有一个强制关闭,或者加载它时应用程序很慢的原因:|
我最多只能加载700列,每列只有一个值。
我做错了什么?
答案 0 :(得分:0)
默认情况下,在UI线程上执行查询。听起来你正在查询大量的信息(700列值)并且这会阻塞UI线程很长一段时间。您应该使用CursorLoader
或AsyncTask
异步执行查询,这样就不会阻止UI线程(就像UI线程被阻止4-5秒一样,应用程序将强制关闭“应用程序没有响应”错误)。