У меня очень простой пользовательский интерфейс, и мне нужно постоянно запускать процесс проверки, поэтому я пытаюсь использовать поток с циклом while.Когда я запускаю цикл только с командой Thread.sleep (1000), она работает нормально, но как только я вставляю display.setText (), программа на секунду запускается на эмуляторе, а затем завершает работу.Я даже не вижу сообщения об ошибке, так как оно выходит так быстро.
Затем я взял команду display.setText () вне потока и просто поместил ее непосредственно в onCreate, и она работает нормально (так что проблем нет)с фактической командой).
вот мой код, и помощь будет принята с благодарностью.Спасибо!
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
on=(Button) findViewById(R.id.bon);
off=(Button) findViewById(R.id.boff);
display=(TextView) findViewById(R.id.tvdisplay);
display2=(TextView) findViewById(R.id.tvdisplay2);
display3=(TextView) findViewById(R.id.tvdisplay3);
stopper=(Button) findViewById(R.id.stops);
stopper.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(boo=true)
{
boo=false;
display3.setText("System Off");
}
else{
boo=true;
}
}
});
Thread x = new Thread() {
public void run() {
while (boo) {
display3.setText("System On");
try {
// do something here
//display3.setText("System On");
Log.d(TAG, "local Thread sleeping");
Thread.sleep(1000);
} catch (InterruptedException e) {
Log.e(TAG, "local Thread error", e);
}
}
}
};
display3.setText("System On");
display3.setText("System On");
x.start();
}