我有一個backgorund線程,它擴展了AsyncTask,並且我在活動中使用它來從數據庫讀取一些數據。開始一個後臺線程的問題
我使用這個後臺線程爲了不讓我的應用程序被阻塞,因爲需要檢索的大量數據。
通常我啓動線程是這樣的:
public void onResume(){
init_task.execute(db);
}
public class InitTask extends AsyncTask<DBAdapter, GeoPoint, Void> {
...some code here....
}
protected void onPause() {
init_task.cancel(true);
super.onPause();
}
的一點是,我開始線程的onResume()和的onPause()
取消它,但現在我有一個不同的問題。
我有一個自動完成,顯示下拉列表,當我點擊這些條目之一時,我想開始後臺線程(我現在從數據庫檢索的數據取決於我點擊的項目)。
那麼,我已經實現了一個監聽器,我在那裏啓動線程....問題是監聽器是onCreate(),所以我不能在onCReate()內使用onResume()....
現在我的問題是,我不知道如何停止線程原因,一旦我離開活動,它仍然從我的數據庫中檢索數據...我希望它停止。
這裏是我的代碼圖:
問題public void onCreate(Bundle savedInstanceState){
textView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
init_task = new InitTask();
init_task.execute(db);
}
});
}
public class InitTask extends AsyncTask<DBAdapter, GeoPoint, Void> {
}
:我應該在哪裏等等,只要我離開它停止從數據庫中檢索數據的活動停止我的線程......之後我回來了,重新開始!!?
你是什麼意思實例領域的原因我沒有得到它....我很新的這個!你可以把一個小例子與你的意思,所以我可以理解? – embry 2011-05-30 16:33:49
好的,我添加了一些代碼。 – 2011-05-30 16:43:27
但是我在onCreate()中開始我的線程....你可以在onCreate()中啓動它,只需要這一行:InitTask initTask = null; 應該在我的活動???我說得對嗎? – embry 2011-05-30 16:46:42