2011-09-27 37 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的線程安全性。