尝试在我的应用程序中创建塞子
我创建了正在运行的应用程序,并试图在用户按下开始按钮时创建塞子。 但是当我使用线程的应用程序返回黑屏 ,这是我的onCreate方法我附加螺纹尝试在我的应用程序中创建塞子
Thread t = new Thread() {
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
SetTextOnView();
}
});
}
};
t.start();
的SetTextOnView方法包含
public void SetTextOnView()
{
TextView timedisp = (TextView) findViewById(R.id.stopperdisplay);
while(true)
{
timedisp.setText(String.valueOf(total));
}
}
当我加入而statment 为什么这个问题开始就是它?
执行循环在你的线程不会阻塞UI线程+添加一些延迟,不会阻塞UI线程:
Thread t = new Thread() {
public void run() {
while (true) {
runOnUiThread(new Runnable() {
@Override
public void run() {
SetTextOnView();
}
});
Thread.sleep(1000);
}
}
};
而且你SetTextOnView:
public void SetTextOnView()
{
TextView timedisp = (TextView) findViewById(R.id.stopperdisplay);
timedisp.setText(String.valueOf(total));
}
感谢工作完美! :)我didnt知道,我需要在线程内设置延迟,所以为了我自己的理解,当我创建线程我需要添加共振延迟,我不想让那个线程打扰主线程(我是它的线程运行oncreate方法,所以..)是吗? – boazDotnet 2014-12-05 16:06:13
是的,主线程(= Android中的UI线程)是管理活动的生命周期,显示器,接口等的人......你需要尽可能释放这个线程以获得反应式应用程序。所以,循环和延迟在这里每秒只执行setText一次,以尽量减少对应用程序的影响。 – Jivy 2014-12-05 16:22:23
你做一个无限循环使用一些工作在主(= UI)线程中。因此,应用程序开始不响应,然后显示一个黑屏 – Jivy 2014-12-05 15:31:30
因此,如果我想创建限制用户的行走时间,当他按下开始按钮时,我怎么能没有时间呢? – boazDotnet 2014-12-05 15:36:36
你需要的时间,但不是在主线程,你需要在每个setText之间添加一些延迟。 – Jivy 2014-12-05 15:44:35