如何在后台运行查询
问题描述:
我列出了不同类别的产品。我必须整理它们。由于查询,加载需要更多时间。两次活动之间,屏幕变黑。我想在后台运行查询。我该怎么做,以及如何在主要活动中使用它的结果? 私有类InsertTask扩展AsyncTask {0}字符串cat;如何在后台运行查询
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Boolean doInBackground(String... params) {
Boolean success = false;
try {
category(cat);
success = true;
} catch (Exception e) {
if(e.getMessage()!=null)
e.printStackTrace();
}
return success;
}
@Override
protected void onPostExecute(Boolean success) {
super.onPostExecute(success);
}
private void category(String category) {
try{
Cursor1 = mDbHelper.fetchcategory(category);
}catch(Exception e){
Log.v("Excep", ""+e);
}
}
并号召
InsertTask task = new InsertTask();
task.execute();
当我列出在按钮的类别。我怎样才能得到这些值呢?
答
我正在做一些自己的搜索,我碰到了这个阅读,它很长,但看起来非常有帮助,有很多代码示例。 (我为自己添加了书签)。
Threads, Async, and Handlers O MY!
但某种形式的线程的是门票。
从Android开发。 (我最喜欢的代码片段)
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
//Do Work here
}
}).start();
}
答
它的你有没有想过的AsyncTask的好。首先,你可以在课堂活动中声明这个类是内部的(如果你以前没有这样做),所以你可以访问你的视图类成员。
您也可以通过创建将用于更新UI组件的线程和一个处理程序来执行此操作。请记住,如果使用线程,则需要锁定/解锁数据库对象,因为线程安全(如果任何其他线程因任何原因正在访问数据库)。详细了解dbs的线程安全性。
谢谢亚历克斯.... – sarah
更多信息链接已经死亡 – Swapnil
这已经有一段时间了,所以他们一定已经移动了文章。我找到了这一个。可能是相同的:http://android-developers.blogspot.com/2009/05/painless-threading.html –