猿问

Android UI 未在线程中更新

在 Log 中工作正常,但在 setText 中不会更改屏幕上的任何内容,也不会发生错误。


//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();

                }

            }

        };

我应该改变什么?


正如我所说,代码正在运行,日志事件正在被完美地调用和执行,唯一不会发生的事情是更新 setText 根本不运行,但也不会出现任何错误。


小怪兽爱吃肉
浏览 158回答 1
1回答

杨魅力

调用t1.start();您的 UI 线程来运行它
随时随地看视频慕课网APP

相关分类

Java
我要回答