如何在没有锁定android中的应用程序UI的情况下等待10秒钟

Dar*_*ion 36 java android wait

我遇到了问题,我想等待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();
   }
Run Code Online (Sandbox Code Playgroud)

小智 155

你可以用这个:

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    public void run() {
     // Actions to do after 10 seconds
    }
}, 10000);
Run Code Online (Sandbox Code Playgroud)

对于停止处理程序,您可以尝试这样做: handler.removeCallbacksAndMessages(null);


cod*_*gic 16

你永远要调用thread.sleep()的上UI线,因为它听起来像你已经想通了.这冻结了UI并且总是一件坏事.你可以单独使用ThreadpostDelayed

这个SO答案显示了如何做到这一点以及其他几个选项

处理器

的TimerTask

您可以查看这些内容并查看哪种内容最适合您的特定情况