1
通過RoboSpice
以異步方式執行一堆請求最簡單的方法是什麼?使用RoboSpice執行Parellel
我在某處閱讀我需要實施RequestRunner
,但我不知道如何將它與SpiceManager
合併,任何想法?
通過RoboSpice
以異步方式執行一堆請求最簡單的方法是什麼?使用RoboSpice執行Parellel
我在某處閱讀我需要實施RequestRunner
,但我不知道如何將它與SpiceManager
合併,任何想法?
您可以覆蓋線程的NUM可用,定義自己的自定義SpiceService:
public class CustomSpiceService extends RetrofitGsonSpiceService {
/**
* Overrides the number of threads that will be used to make requests. The default
* is 1.
*/
@Override
public int getThreadCount(){
return NUM_THREAD;
}
}
你可以使用你的新spiceService在你的經理之後:
private SpiceManager spiceManager = new SpiceManager(CustomSpiceService.class);
作爲獎勵,你可以檢測到您的連接類型,因此如果您使用Wifi連接,則可以擁有更多線程。
/**
* Overrides the number of threads that will be used to make requests. The default
* is 1, so if we are on a fast connection we use 4, otherwise we use 2.
*/
@Override
public int getThreadCount() {
ConnectivityManager connectivityManager =
(ConnectivityManager) DaftApp.getInstance().getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if(info==null){
return 2; // there is no network available now. Anyway we use the default num of thread
}
switch (info.getType()) {
case ConnectivityManager.TYPE_WIFI:
case ConnectivityManager.TYPE_WIMAX:
case ConnectivityManager.TYPE_ETHERNET:
return 4;
case ConnectivityManager.TYPE_MOBILE:
return 2;
default:
return 2;
}
}
這是一個很好的答案。此外,請注意至少爲UI線程留出一個免費的內核。因此,分配給RS的理想核心編號應該最大程度地等於設備的內核數量 - 1。 – Snicolas