我有一些关于从Android应用程序执行SQL查询(到在线数据库)的问题。
由于这些是网络操作并且成本很高,我应该在单独的线程中进行吗?此外,在处理这些查询时,我应该向用户(UI)显示什么?
答案 0 :(得分:3)
我建议您使用AsyncTask
。在doInBackground()
方法中,您将下载/处理内容。在onPostExecute()
中,您将在UI上显示。这很简短。研究基于AsyncTask以获取更多信息。
答案 1 :(得分:2)
对于AsyncTask,第一个答案是好的。如果他们真的是长时间查询,我会把它们放在一个服务中并通过广播与活动进行通信,但如果它们只是“网络长”,那么Async就是好的。
似乎每个人都想使用等待对话,但这种用户界面通常很糟糕。它会阻止所有内容,因此如果您无法得到响应或其他任何内容,则用户会被卡住。我最近审查了一个人的应用程序,因为我们的网络很慢,在警报框中等待的时间是47秒。知道用户感觉多久了吗?
我会禁用重新发布,放置某种微调器,但不要阻止UI。如果用户想要做其他事情,请让他们。此外,当AsyncTask返回时,它期望操作的屏幕可能不再存在。包裹所有内容,以防您遇到异常。
我尝试在服务中做所有远程操作,即使它不是完全必要的。与广播来回交谈。不过那只是我;)