Android recyclerView HttpURLConnection
Android recyclerView HttpURLConnection
我有一个 recyclerview,其中每一行都包含一个 url,并且 url 随时可能过期。
我希望用户不要被迫单击 url 来检查它是否无效,但在这种情况下我宁愿更改行的颜色以通知用户。
这是我用来检查 url 是否仍然有效的方法:
private boolean isUrlStillValid(String url) {
try {
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
con.setRequestProperty("Accept-Encoding", "");
int responseCode = con.getResponseCode();
con.disconnect();
return responseCode == HttpURLConnection.HTTP_OK;
}catch(Exception e) {
return false;
}
}
我最初想在回收站视图的 onBindViewHolder 方法中启动一个 AsyncTask,我在其中检查 url 有效性,但这会在每次显示一行时同时打开很多连接,并且会导致非常我认为性能和内存问题不佳。
你有什么tip/suggestions如何做到这一点吗?
Do you have any tip/suggestions on how to achieve this?
为每个 url 创建一个 运行nable 和 运行 所有这些都在 ExecutorService.
修复线程池上
例如,您可以使用以下代码一次拥有 5 个线程:
ExecutorService executor = Executors.newFixedThreadPool(5);
我还建议将结果保存在某处,这样当用户使用滚动条时,它不会一次又一次地检查 url ...
我有一个 recyclerview,其中每一行都包含一个 url,并且 url 随时可能过期。 我希望用户不要被迫单击 url 来检查它是否无效,但在这种情况下我宁愿更改行的颜色以通知用户。
这是我用来检查 url 是否仍然有效的方法:
private boolean isUrlStillValid(String url) {
try {
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
con.setRequestProperty("Accept-Encoding", "");
int responseCode = con.getResponseCode();
con.disconnect();
return responseCode == HttpURLConnection.HTTP_OK;
}catch(Exception e) {
return false;
}
}
我最初想在回收站视图的 onBindViewHolder 方法中启动一个 AsyncTask,我在其中检查 url 有效性,但这会在每次显示一行时同时打开很多连接,并且会导致非常我认为性能和内存问题不佳。
你有什么tip/suggestions如何做到这一点吗?
Do you have any tip/suggestions on how to achieve this?
为每个 url 创建一个 运行nable 和 运行 所有这些都在 ExecutorService.
修复线程池上例如,您可以使用以下代码一次拥有 5 个线程:
ExecutorService executor = Executors.newFixedThreadPool(5);
我还建议将结果保存在某处,这样当用户使用滚动条时,它不会一次又一次地检查 url ...