|
|
|
|
@ -32,8 +32,13 @@ import org.json.JSONObject; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.LinkedHashMap; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.concurrent.Callable; |
|
|
|
|
import java.util.concurrent.ExecutionException; |
|
|
|
|
import java.util.concurrent.ExecutorService; |
|
|
|
|
import java.util.concurrent.Executors; |
|
|
|
|
import java.util.concurrent.Future; |
|
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
|
import java.util.concurrent.TimeoutException; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @author pj567 |
|
|
|
|
@ -57,7 +62,7 @@ public class SourceViewModel extends ViewModel { |
|
|
|
|
playResult = new MutableLiveData<>(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static final ExecutorService spThreadPool = Executors.newFixedThreadPool(3); |
|
|
|
|
public static final ExecutorService spThreadPool = Executors.newSingleThreadExecutor(); |
|
|
|
|
|
|
|
|
|
public void getSort(String sourceKey) { |
|
|
|
|
if (sourceKey == null) { |
|
|
|
|
@ -67,13 +72,40 @@ public class SourceViewModel extends ViewModel { |
|
|
|
|
SourceBean sourceBean = ApiConfig.get().getSource(sourceKey); |
|
|
|
|
int type = sourceBean.getType(); |
|
|
|
|
if (type == 3) { |
|
|
|
|
spThreadPool.execute(new Runnable() { |
|
|
|
|
Runnable waitResponse = new Runnable() { |
|
|
|
|
@Override |
|
|
|
|
public void run() { |
|
|
|
|
Spider sp = ApiConfig.get().getCSP(sourceBean); |
|
|
|
|
sortJson(sortResult, sp.homeContent(true)); |
|
|
|
|
ExecutorService executor = Executors.newSingleThreadExecutor(); |
|
|
|
|
Future<String> future = executor.submit(new Callable<String>() { |
|
|
|
|
@Override |
|
|
|
|
public String call() throws Exception { |
|
|
|
|
Spider sp = ApiConfig.get().getCSP(sourceBean); |
|
|
|
|
return sp.homeContent(true); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
String sortJson = null; |
|
|
|
|
try { |
|
|
|
|
sortJson = future.get(15, TimeUnit.SECONDS); |
|
|
|
|
} catch (TimeoutException e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
future.cancel(true); |
|
|
|
|
} catch (InterruptedException | ExecutionException e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
} finally { |
|
|
|
|
if (sortJson != null) { |
|
|
|
|
sortJson(sortResult, sortJson); |
|
|
|
|
} else { |
|
|
|
|
sortResult.postValue(null); |
|
|
|
|
} |
|
|
|
|
try { |
|
|
|
|
executor.shutdown(); |
|
|
|
|
} catch (Throwable th) { |
|
|
|
|
th.printStackTrace(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
spThreadPool.execute(waitResponse); |
|
|
|
|
} else if (type == 0 || type == 1) { |
|
|
|
|
OkGo.<String>get(sourceBean.getApi()) |
|
|
|
|
.tag(sourceBean.getKey() + "_sort") |
|
|
|
|
|