Android Developer Site で次のように述べていますUIThread
。代わりに、別のスレッドで実行する必要があります。このサイトでは、彼らはまだ言います:
UI スレッドが数秒以上 (現在約 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 は「アプリケーションが応答していません」と気付くと思います。しかし、私はエラーが表示されません。プログラムはスムーズに実行されます (「待機終了」というテキストも表示されます)。
それで、誰が私のコードについて説明してくれますか。私が作ったなんて間違ったことをしてください。
ありがとう :)