简体   繁体   中英

Android Java: Update a TextView every x seconds without user input

I'm making an app in Android Java, using Android Studio. Every 0.1 seconds I want to update the text within a certain TextView.

I already managed to use a Handler to execute a method every 0.1 seconds (100 ms), but it doesn't automatically update the TextView.

It only updates the TextView to what I want when the user interacts with the app. It only updates it when, for example, the user slides the SeekBar or presses a button. It doesn't update when the user clicks on the screen, and not automatically without input either.

How can I make it such that it will update the value automatically, without user input?

Thanks in advance.

PS: I'm new to Android and Java, and I'm using threads to get the value, in xml format, from a website.

Should I post any code, and if so, what exactly?

you can try updating the value of text view on the UI thread.

 runOnUiThread(new Runnable() {
        @Override
        public void run() {
            //update TextView here
        }
    });
Thread t = new Thread() {
        @Override
        public void run() {
            try {
                while (!isInterrupted()) {
                    Thread.sleep(100);
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            // update TextView here!
                        }
                    });
                }
            } catch (InterruptedException e) {
            }
        }
    };

    t.start();

You can update your textview using thread also, like this.

 int prStatus = 0;
 new Thread(new Runnable() {
        public void run() {
            while (prStatus < 100) {
                prStatus += 1;
                handler.post(new Runnable() {
                    public void run() {
                        tv.setText(prStatus + "/");
                    }
                });
                try {
                    Thread.sleep(150);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                if(prStatus == 100)
                    prStatus = 0;
            }
        }
    }).start();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM