2016-03-10 90 views
3

我已經開發了一個IntentService的Android應用程序。Android停止指定IntentService

這個IntentService不會像fileupload一樣。

我只是想實現上傳多個「文件上傳線程」的功能。

問題是停止一個指定的「file-upload-thread」。

例如:

  1. 用戶選擇從設備十個文件並上傳這些。
  2. 創建通知給用戶「傳遞反饋」。
  3. 線程運行時,用戶可以選擇其他文件上傳。
  4. 另一個通知已創建,但直到第一個線程完成纔會啓動。

是否有可能爲用戶實現「取消功能」來取消第一個線程,第二個線程自動啓動?!

用戶服務而不是IntentService可能更好嗎?

回答

0

IntentServices旨在一次運行一次。當然,你可以取消你的IntentService,因爲從Service繼承。

+0

謝謝@呂迪格。你如何從通知停止一個IntentServices? – Calimero

+0

控制您的IntentService使用:http://developer.android.com/reference/android/os/IBinder.html –

0
class MyService extends IntentService { 
    public static volatile boolean shouldStop = false; 
    public MyService() { 
     super("My Service"); 
    } 

    @Override 
    protected void onHandleIntent(Intent intent) { 
     doStuff(); 
    } 

    private void doStuff() { 
     // do something 

     // continue doing something 

// put those checks wherever you need 
     // check the condition 
     if (shouldStop) { 
      stopSelf(); 
      return; 
     } 


    } 
} 

而且如果您想停止服務,則可以從您的活動代碼中將布爾標誌的狀態更改爲true。希望這會幫助你。

+0

謝謝@Silvans。S o是否可以從通知中停止一個IntentService? – Calimero

+0

是的,你可以在任何地方阻止它,因爲我們採用布爾值作爲公共靜態,所以你也可以從你的通知代碼中訪問。 –

+0

完美西爾萬!但我認爲這個洞「IntentService-Que」取消了?我只想停止X線程中的一個...也許我誤解了你:( – Calimero

0

IntentService被設計爲只有在處理了工作隊列中的所有請求時纔會自行停止。按照文檔,IntentService類「在處理完所有啓動請求後停止服務,因此您永遠不必調用stopSelf()

如果要取消請求,你也許可以用排球和取消以前的請求 https://developer.android.com/training/volley/simple.html#cancel