2012-08-30 77 views
1

我有一個ListView其中每行代表需要上傳到服務器的內容。每行包含一個Button,當按下時啓動一個intent服務開始上傳到服務器。Android意向服務

當我第一次按Button時,意向服務啓動,但第二次新的意向服務不啓動?應該是 ?這是我的ListViewButtononClickListener中的代碼。

Intent intent = new Intent(VaultActivity.this, Upload.class); 
intent.putExtra(FILEPATH, vidoObject.filePath); 
intent.putExtra(POSITION, position); 
ListActivity.this.startService(intent); 

我做錯了什麼?第二行按鈕是不是也創建了一個新的IntentService來開始上傳?

回答

3

的IntentService實際上只是一個工作隊列:

  • 當第一startService調用時啓動服務,創建工作線程,並增加交付的意圖工作隊列
  • 工作者線程讀取來自隊列的第一個意圖並對其進行處理
  • 如果在處理第一個意圖期間,第二個意圖傳遞給服務(通過第二個startService調用)意圖被添加到隊列中(第三個,第四個等等)
  • t他的工人繼續工作,直到工作隊列爲空,之後該服務被停止

使您的第二排按鈕啓動另一個服務有可能,但前提是先上傳已經完成。

如果您要上傳兩個文件同時你不能使用IntentService,因爲它一次處理一個命令。

+0

謝謝,我真的明白了這一點。第二行在第一次上傳完成後開始上傳。比你。 – AndroidDev