На сайте разработчиков Android сказано, что: Мы не должны использовать длительные операции в UIThread
.Вместо этого мы должны сделать это в другом потоке.На этом сайте все еще говорят:
, если поток пользовательского интерфейса заблокирован на более чем несколько секунд (в настоящее время около 5 секунд), пользователю предоставляется печально известное «приложение не отвечает» (ANR)Диалог.
Чтобы проверить это утверждение, я делаю доказательство.Вот мой код:
package com.app;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class Example extends Activity{
TextView textView;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
textView = new TextView(this);
textView.setText("please wait");
setContentView(textView);
}
@Override
public void onResume(){
super.onResume();
try {
Thread.sleep(8000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
textView.setText("end waiting !!!");
}
}
Как видите, я заставляю текущий поток (UIThread
) спать 8 секунд.Поэтому, я думаю, что если я запустите это приложение, Android заметит: «приложение не отвечает».Но я не вижу никакой ошибки.Программа работает без сбоев (и я вижу текст "ожидание окончания").
Итак, кто может объяснить мне мой код.Какую неправильную вещь я сделал, пожалуйста.
спасибо:)