From 1f341837b948a5f43f508cb3052e900518f00dcc Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 20 Jan 2016 10:45:17 +0100 Subject: [PATCH] Cache resolved IP addresses Closes #237 --- .../java/eu/faircode/netguard/LogAdapter.java | 44 ++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/eu/faircode/netguard/LogAdapter.java b/app/src/main/java/eu/faircode/netguard/LogAdapter.java index 60b31ee2..f537aa49 100644 --- a/app/src/main/java/eu/faircode/netguard/LogAdapter.java +++ b/app/src/main/java/eu/faircode/netguard/LogAdapter.java @@ -18,6 +18,8 @@ import com.squareup.picasso.Picasso; import java.net.InetAddress; import java.net.UnknownHostException; import java.text.SimpleDateFormat; +import java.util.HashMap; +import java.util.Map; public class LogAdapter extends CursorAdapter { private int colTime; @@ -30,6 +32,7 @@ public class LogAdapter extends CursorAdapter { private int colConnection; private int colInteractive; private int colAllowed; + private Map mapIPHost = new HashMap(); public LogAdapter(Context context, Cursor cursor) { super(context, cursor, 0); @@ -140,23 +143,32 @@ public class LogAdapter extends CursorAdapter { // tvFlags.setText("+APFR"); // tvUid.setText("18888"); - tvIP.setText(whois); + synchronized (mapIPHost) { + if (mapIPHost.containsKey(whois)) + tvIP.setText(mapIPHost.get(whois)); + else { + tvIP.setText(whois); + new AsyncTask() { + @Override + protected String doInBackground(String... args) { + try { + // This requires internet permission + return InetAddress.getByName(args[0]).getHostName(); + } catch (UnknownHostException ignored) { + return whois; + } + } - new AsyncTask() { - @Override - protected String doInBackground(String... args) { - try { - // This requires internet permission - return InetAddress.getByName(args[0]).getHostName(); - } catch (UnknownHostException ignored) { - return null; - } + @Override + protected void onPostExecute(String host) { + synchronized (mapIPHost) { + if (!mapIPHost.containsKey(host)) + mapIPHost.put(host, host); + } + tvIP.setText(host); + } + }.execute(whois); } - - @Override - protected void onPostExecute(String host) { - tvIP.setText(host); - } - }.execute(whois); + } } }