Android让Toast在Thread.sleep // Systemclock.sleep之前出现

时间:2013-04-01 23:03:51

标签: android sleep

我想让Toast出现,然后让睡眠运转。

如果我这样做,Toast出现在睡眠之后,但我想要反过来。有人有建议吗?这是我的代码

switch (checkedRadioButton) {
                  case R.id.radio0 : radioButtonSelected = "radiobutton1";
                  Toast.makeText(getApplicationContext(), "text", Toast.LENGTH_LONG).show();
                  vd.vibrate(100);        
                  android.os.SystemClock.sleep(1000);         
                  vd.vibrate(100);

感谢到目前为止

2 个答案:

答案 0 :(得分:2)

toast的显示是异步(即非阻塞调用)操作,意味着一旦执行了toast请求,操作系统将跳转到下一个操作,同时准备并显示toast。

要获取默认行为,应在延迟几秒后执行线程睡眠调用。为此使用Handler及其 postDelay 方法。

延迟时间应该是:

LONG_DELAY = 3500;  // 3.5 seconds
SHORT_DELAY = 2000; // 2 seconds

答案 1 :(得分:0)

Try to use AsyncTask class.Write this code as it is. no need to take the name of variable of class AsyncTask.

   new AsyncTask<Void, Void, Void>() {

           @Override
           protected void onPostExecute(Void result) {
               Toast toast2 = Toast.makeText(context, "Task completed",
                       Toast.LENGTH_SHORT);
               toast2.show();

           }

           @Override
           protected void onPreExecute() {
               Toast.makeText(getApplicationContext(), "here is your text before Sleep", Toast.LENGTH_LONG).show();
           }

           @Override
           protected Void doInBackground(Void... voids) {

                   try {

                       Thread.sleep(1000); // time in milisec 1000ms= 1sec

                   } catch (InterruptedException e) {
                       e.printStackTrace();
                   }


               return null;
           }

       }.execute();