Android服务在thread.join

时间:2017-09-23 02:14:52

标签: java android multithreading

我正在尝试构建一个函数来确定是否存在电话网络连接,但是如果它检测失败我希望它继续尝试检测它一段时间,一旦这个时间过去并且它没有没有检测到它将被检测到,如果检测到它,则检测到它的检测将被停止,并且返回的是连接存在。

我想我可以通过以下代码实现这一目标:

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时,我都会得到不可用于未悬浮线程的错误帧,即使这只是一个调试错误,应用程序也不会超过这一点。

对可能发生的事情有任何想法?

0 个答案:

没有答案