java - Android: "Auto refresh"一段时间后

标签 java android multithreading runnable

我搜索了如何为我的程序执行“自动刷新”或可运行方法,我看到了一些关于处理程序和线程的帖子... 我认为我搜索的是一个线程,但我无法让程序运行...... 让我向您展示一些代码:

refresh.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            getUrlText();
            if (time.getText().toString().equals("")
                    || time.getText().toString().equals("0")) {
                mins = 0;
            } else {

                mins = Integer.parseInt(time.getText().toString());
                setTimer(mins);
                t.start();


            }

        }

        private void setTimer(int mins) {
            miliSecTime = mins * 60 * 1000;

        }
    });

    t= new Thread() {
        @Override
        public void run() {
            long start = System.currentTimeMillis();

            while (true) {
                long time = System.currentTimeMillis() - start;
                int seconds = (int) (time / 1000);
                if (seconds > miliSecTime) {
                    getUrlText();
                    start = System.currentTimeMillis();

                }
            }
        }
    };
}

因此,这部分代码应该从用户那里获取一个数字,然后执行getUrlText();每 x 分钟,其中 x 是用户输入的数字... 我的问题应该在运行中,但我不知道是什么...... 预先感谢您的帮助:)

最佳答案

这是一种方法。

在您的 Activity 中声明这些:

Handler handler = new Handler();
Runnable timedTask = new Runnable(){

    @Override
    public void run() {
        getUrlText();
        handler.postDelayed(timedTask, 1000);
    }};

然后设置你的onClick:

button.setOnClickListener(new OnClickListener() {

    @Override
        public void onClick(View v) {
            getUrlText();
            handler.post(timedTask);
        }
    });

这将每 1000 毫秒执行一次 timedTask。根据需要增加此数字。

我不确定你在用 mins 等做什么但是把你所有需要定期执行的逻辑放到 timedTask Runnable 。希望这是有道理的。

关于java - Android: "Auto refresh"一段时间后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17113526/

相关文章:

java - 检测标签的正则表达式

android - 为 Bintray 上传禁用 javadoc 检查

c++ - 使用 CRYPTO_thread_setup 的多 SSL 环境

c++ - Boost::thread 中的 join() 究竟是什么? (C++)

java - 如何从 Java JAR 文件调用 Python 脚本

java - Maven 依赖项显示在依赖项树中,但没有导入 jar

java - 将多行文本追加到 JTextArea?

android - 使用 ffmpeg 将 RTP/UDP 流转换为 HTTP

android - @Background 和 screen rotation 使用 AndroidAnnotations 时,如何确保收到回调?

c# - 多个后台线程