我正在尝试构建一个函数来确定是否存在电话网络连接,但是如果它检测失败我希望它继续尝试检测它一段时间,一旦这个时间过去并且它没有没有检测到它将被检测到,如果检测到它,则检测到它的检测将被停止,并且返回的是连接存在。
我想我可以通过以下代码实现这一目标:
public static String operatornetwork = null;
static boolean finish = false;
static boolean telephonynetworkfound = false;
[...]
final CountDownTimer cdt=new CountDownTimer(60 * 1000, 5 * 1000)
{
public void onTick(long millisUntilFinished)
{
operatornetwork = tel.getNetworkOperator();
if ((operatornetwork != null) && (!operatornetwork.equals("")))
{
telephonynetworkfound = true;
finish=true;
}
}
public void onFinish()
{
operatornetwork = tel.getNetworkOperator();
if ((operatornetwork != null) && (!operatornetwork.equals(""))) {
telephonynetworkfound = true;
}
finish=true;
}
};
cdt.start();
final Thread welcomeThread = new Thread()
{
@Override
public void run()
{
try
{
super.run();
while (true)
{
if (finish)
{
break;
}
sleep(3000);
}
}
catch (Exception e)
{
} finally
{
}
}
};
welcomeThread.start();
try
{
welcomeThread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
return telephonynetworkfound;
我认为,当无限循环在一个单独的线程上运行时,它不会阻止应用程序,并且在CountDownTimer中至少onFinish完成应该是真的,但看起来该块来自welcomeThread.join( ),但我无法确定,因为每当我在调试中到达welcomeThread.join时,我都会得到不可用于未悬浮线程的错误帧,即使这只是一个调试错误,应用程序也不会超过这一点。
对可能发生的事情有任何想法?