Check WiFi Connectivity and internet connectivity in Background thread - with a return value
Your implementation of isNetworkConnected does not make much sense for the following reasons:


You create a new, private ExecutorService each time the method runs. The intention behind Executors is that they're created once and then used over a longer time span to execute multiple (short) tasks. This should save you from having to create a new Thread for each task, because the executor manages a number of threads which get re-used for multiple tasks in succession.
You don't need that FutureTask&lt;Boolean&gt;. The usual idiom of the ExecutorService is like:

Callable myCallable = new CheckConnection(...);
Future future = service.submit( myCallable );
...
Boolean result = future.get();
It does not make any sense to submit a (single) task to an executor and then start waiting for completion immediately. This will block exactly as if there was no Executor involved at all. In your case, you could just write Boolean result = new CheckConnection(...).call(); with the same effect w.r.t. concurrency.


Suggestion

Don't run your checking code and wait for the result. Better have your checking code run in the background periodically (e.g. in a dedicated Thread or a ScheduledExecutorService) and have that code post its result back to any interested party.

You can use a Handler to send a message from a background thread to the UI thread. For example, send one message each time the connectivity state changes.