2011-09-27 98 views
2

我列出了不同类别的产品。我必须整理它们。由于查询,加载需要更多时间。两次活动之间,屏幕变黑。我想在后台运行查询。我该怎么做,以及如何在主要活动中使用它的结果? 私有类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(); 

当我列出在按钮的类别。我怎样才能得到这些值呢?

回答

3

您应该使用AsyncTask。还有一些more info

+0

谢谢亚历克斯.... – sarah

+1

更多信息链接已经死亡 – Swapnil

+1

这已经有一段时间了,所以他们一定已经移动了文章。我找到了这一个。可能是相同的:http://android-developers.blogspot.com/2009/05/painless-threading.html –

1

我正在做一些自己的搜索,我碰到了这个阅读,它很长,但看起来非常有帮助,有很多代码示例。 (我为自己添加了书签)。

Threads, Async, and Handlers O MY!

但某种形式的线程的是门票。

从Android开发。 (我最喜欢的代码片段)

public void onClick(View v) { 
new Thread(new Runnable() { 
public void run() {  
//Do Work here 
      } 
    }).start(); 
} 
2

它的你有没有想过的AsyncTask的好。首先,你可以在课堂活动中声明这个类是内部的(如果你以前没有这样做),所以你可以访问你的视图类成员。

您也可以通过创建将用于更新UI组件的线程和一个处理程序来执行此操作。请记住,如果使用线程,则需要锁定/解锁数据库对象,因为线程安全(如果任何其他线程因任何原因正在访问数据库)。详细了解dbs的线程安全性。