如何在不锁定Android应用程序用户界面的情况下等待10秒


问题内容

我遇到了一个问题,我想等待10秒钟,因为我希望我的应用程序在那10秒钟后启动下面的代码,但又不阻止该人单击应用程序中的其他任何内容( _而无需_调用Thread.sleep();)。

try {
    Log.v("msg", "WAIT CheckFrequencyRun");
    Thread.sleep(10000); // giving time to connect to wifi
    
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   //if no network
   if(wifiManager.getConnectionInfo().getNetworkId()==-1){
    //stop wifi
    wifiManager.setWifiEnabled(false);
    Log.v("msg", "no connection");
    handler.postDelayed(this, checkInterval);
   }
   //else connection
   else{
    Log.v("msg", "connection");
    onDestroy();
   }

问题答案:

您从不希望thread.sleep()UI线程上进行调用,因为听起来您已经弄清楚了。这会冻结UI并且始终是一件坏事。您可以使用一个单独的ThreadpostDelayed

这样的答案显示了如何做到这一点以及其他几种选择

处理程序

计时器任务

您可以查看这些内容,然后查看哪种方法最适合您的特定情况