首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当检查服务器端口是否已打开或未使用ThreadPoolExecutor时,Android应用程序将挂起并显示黑色屏幕5-6秒。

当检查服务器端口是否已打开或未使用ThreadPoolExecutor时,Android应用程序将挂起并显示黑色屏幕5-6秒。
EN

Stack Overflow用户
提问于 2017-06-04 09:36:24
回答 1查看 252关注 0票数 1

如果服务器端口打开,我需要运行一个服务。我正在用下面的方法来做这件事。

代码语言:javascript
复制
public Future<Boolean> ifPortIsOpenThenStartIridiumService(final Context context, final String device_mac, final String device_imei, final String input_mobile) {
    return Executors.newFixedThreadPool(20).submit(new Callable<Boolean>() {
        @Override
        public Boolean call() {
            try {
                String SERVER_IP = "IP Address"; 
                int SERVER_PORT = Server_port; 
                int DURATION = 1000;

                Socket socket = new Socket();
                socket.connect(new InetSocketAddress(SERVER_IP, SERVER_PORT), DURATION);
                socket.close();

                Log.d(TAG, "Port is Open");

                runIridiumService(context, device_mac, device_imei, input_mobile);

                return true;
            } catch (Exception ex) {
                Log.d(TAG, "Port is not Open");
                CustomToast.showToast(context, "No Internet Access.", "If in flight, please switch to \"Aeroplane Mode\" and connect to the airline's Wi-Fi network.", 1);

                return false;
            }
        }
    });
}

上面的代码是有效的,但是当我运行这个方法时,应用程序被挂起,黑色屏幕显示了5-6秒。我在Logcat上发现了下面的消息。

W/ActivityManager:启动超时已经过期,放弃了唤醒锁!

该服务启动后,应用程序运行良好。我怎样才能解决这个问题?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-06-06 09:45:08

经过一些研究,据我所知,

Android应用程序挂起并显示黑色屏幕5-6秒,因为,

未来-

未来表示异步计算的结果。提供了检查计算是否完成、等待其完成和检索计算结果的方法。

所以,它一直等到操作完成。你可以得到更多的信息从这里开始。

newFixedThreadPool -

在任何时候,最多的nThreads线程都是活动的处理任务。如果在所有线程都处于活动状态时提交了其他任务,它们将在队列中等待,直到线程可用为止。

获取更多信息从这里开始。

解决问题的可能方法是使用ScheduledExecutorService。

在此之前,您可以检查未来是否已完成或未使用

if (YOUR_FUTURE.isDone()){ result = (String) YOUR_FUTURE.get(); }

避免不必要的或额外的循环。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44352674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档