mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
Add timeout to prevent spending forever trying to determine an Internet connection
This commit is contained in:
@@ -45,4 +45,21 @@ public class ThreadUtil {
|
|||||||
public static boolean isGameThread() {
|
public static boolean isGameThread() {
|
||||||
return Thread.currentThread().getName().startsWith("Game");
|
return Thread.currentThread().getName().startsWith("Game");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static <T> T executeWithTimeout(Callable<T> task, int milliseconds) {
|
||||||
|
ExecutorService executor = Executors.newCachedThreadPool();
|
||||||
|
Future<T> future = executor.submit(task);
|
||||||
|
T result;
|
||||||
|
try {
|
||||||
|
result = future.get(milliseconds, TimeUnit.MILLISECONDS);
|
||||||
|
}
|
||||||
|
catch (Exception e) { //handle timeout and other exceptions
|
||||||
|
e.printStackTrace();
|
||||||
|
result = null;
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
future.cancel(true);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
package forge.app;
|
package forge.app;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
import android.content.ClipData;
|
import android.content.ClipData;
|
||||||
import android.content.ClipboardManager;
|
import android.content.ClipboardManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -20,6 +22,7 @@ import com.badlogic.gdx.backends.android.AndroidApplication;
|
|||||||
import forge.Forge;
|
import forge.Forge;
|
||||||
import forge.interfaces.IDeviceAdapter;
|
import forge.interfaces.IDeviceAdapter;
|
||||||
import forge.util.FileUtil;
|
import forge.util.FileUtil;
|
||||||
|
import forge.util.ThreadUtil;
|
||||||
|
|
||||||
public class Main extends AndroidApplication {
|
public class Main extends AndroidApplication {
|
||||||
@Override
|
@Override
|
||||||
@@ -89,15 +92,25 @@ public class Main extends AndroidApplication {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isConnectedToInternet() {
|
public boolean isConnectedToInternet() {
|
||||||
|
return Boolean.TRUE.equals(ThreadUtil.executeWithTimeout(new Callable<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public Boolean call() throws Exception {
|
||||||
NetworkInfo activeNetworkInfo = connManager.getActiveNetworkInfo();
|
NetworkInfo activeNetworkInfo = connManager.getActiveNetworkInfo();
|
||||||
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
|
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
|
||||||
}
|
}
|
||||||
|
}, 2000)); //if can't determine Internet connection within two seconds, assume not connected
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isConnectedToWifi() {
|
public boolean isConnectedToWifi() {
|
||||||
|
return Boolean.TRUE.equals(ThreadUtil.executeWithTimeout(new Callable<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public Boolean call() throws Exception {
|
||||||
NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
|
NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
|
||||||
return wifi.isConnected();
|
return wifi.isConnected();
|
||||||
}
|
}
|
||||||
|
}, 2000)); //if can't determine Internet connection within two seconds, assume not connected
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getDownloadsDir() {
|
public String getDownloadsDir() {
|
||||||
|
|||||||
Reference in New Issue
Block a user