Android 2.2: Как написать вспомогательный метод, чтобы приложение «спало» в течение N миллисекунд? - PullRequest
0 голосов
/ 29 ноября 2010

Мне нужно написать вспомогательный метод, который я могу использовать в разных местах приложения, чтобы по сути сделать его «спящим» на N миллисекунд. Похоже, что Handler.postAtTime может быть одним из способов сделать это, но я бы хотел любые фрагменты кода, если таковые имеются.

Ответы [ 3 ]

5 голосов
/ 29 ноября 2010

Вы не сказали, почему ваше приложение должно "спать".

Предполагается, что вам нужно запустить задачу через некоторое время:

Handler h = new Handler();
h.postDelayed(new Runnable() {
    public void run() {
       // do something here
    }
}, 1000); // 1000 ms delay
2 голосов
/ 29 ноября 2010

Если вы не возражаете против блокировки потока, альтернативой Thread.sleep () является SystemClock.sleep ().

Преимущество состоит в том, что это однострочник, поскольку он игнорирует InterruptedException, поэтому вам не нужно обрабатывать его.

Подробнее о http://developer.android.com/reference/android/os/SystemClock.html.

Как уже говорилось, вам следует избегать вызова этого в главном потоке пользовательского интерфейса, так как это приведет к тому, что ваше приложение перестанет отвечать на запросы и потенциально покажет страшный диалог, который мы все не хотим видеть (пожалуйста, подождите или принудительно закройте.)

1 голос
/ 29 ноября 2010

Вы ищете что-то подобное?

try {
  //Put the thread to sleep for the desired amount of time (milliseconds)
  Thread.currentThread().sleep(1000);
}
catch(InterruptedException ie){

}

Это переведет поток, из которого вы вызываете его, в спящий режим на указанное вами время.

...