Java Android Ui未在线程中更新
在日志中工作正常,但在setText中不会更改屏幕上的任何内容,也不会发生错误Java Android Ui未在线程中更新,java,android,Java,Android,在日志中工作正常,但在setText中不会更改屏幕上的任何内容,也不会发生错误 //within the onCreate method myRef.child(fireUser.getUid()).addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot da
//within the onCreate method
myRef.child(fireUser.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
millis = Long.valueOf(dataSnapshot.child("millis").getValue().toString());
t1.run();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Intent i = new Intent(getApplicationContext(), SplashActivity.class);
startActivity(i);
finish();
}
});
//Out of the onCreate method
Thread t1 = new Thread(){
@Override
public void run() {
try {
long i;
for(i=System.currentTimeMillis(); i < millis+millis_wait; i=System.currentTimeMillis()) {
runOnUiThread(new Runnable() {
@Override
public void run() {
long pr = (millis + millis_wait) - System.currentTimeMillis();
tx_time.setText(""+pr);
Log.i("TST", "" + pr);
}
});
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
//在onCreate方法中
myRef.child(fireUser.getUid()).addListenerForSingleValueEvent(新值EventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
millis=Long.valueOf(dataSnapshot.child(“millis”).getValue().toString());
t1.run();
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
Intent i=新的Intent(getApplicationContext(),SplashActivity.class);
星触觉(i);
完成();
}
});
//在onCreate方法之外
线程t1=新线程(){
@凌驾
公开募捐{
试一试{
龙我;
for(i=System.currentTimeMillis();i
我应该换什么
正如我所说的,代码正在工作,日志事件正在被调用并完美地执行,唯一没有发生的事情是更新setText不会运行,但也不会因为任何错误而运行。调用
t1.start()代码>在UI线程中运行它是否在代码中调用线程对象。你需要申报健康吗?我不太明白,实际上问题已经解决了,我用的是.run()而不是.start(),谢谢!