2017-07-08 91 views
0

我有2個類叫做AB。 類B包含一個稱爲的靜態函數,計算執行異步網絡調用並將其數據存儲在本地。將調用靜態函數被覆蓋

我想知道下面的代碼是否會終止calculate函數中的異步任務。

Class A 
{ 
B.calculate(); // performs long running async task 
B.calculate(); // the above call to calculate has not finished but this was called 
} 

會從第一個電話開始計算繼續執行或異步任務將它被破壞和新的任務創建 ?

回答

0

不,再次執行AsyncTask不會殺死原始文件。相反,它會向異步任務隊列添加一個新任務(因爲默認情況下,一次只能運行一個異步任務),這將最終運行,從而引發第二個網絡請求。

(注:以上假定您創建AsycTask子類的新實例,如果您嘗試再次執行相同的情況下,你會得到一個異常。)

+0

我打算轉向使用改造和rxjava在這種情況下也會發生同樣的事情嗎?我所需要的功能是網絡呼叫與其各自的數據進行無論計算被調用多少次。 –

+0

沒有線索,取決於你如何實現它。或者,如果你想付出一點努力,你可以使它與AsyncTask一起工作。你必須跟蹤你是否有一個正在運行的任務,如果有的話,不要啓動第二個任務。 –