有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android:一段时间后“自动刷新”

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

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是用户输入的数字。。。 我的问题应该在运行中,但我不知道什么是。。。 提前感谢您的帮助:)


共 (2) 个答案

  1. # 1 楼答案

    1。创建处理程序

    Handler handler = new Handler();
    

    2。创建可运行对象

    public final Runnable runnable = new Runnable() {
    
        @Override
        public void run() {
            // your code while refreshing activity
        }
    };
    

    3。处理程序对象的调用方法

    handler.postDelayed(runnable, 3000);
    

    //3000是以毫秒为单位的时间

    //将此方法放入onCreate()中

    //onResume()或刷新发生的位置

  2. # 2 楼答案

    您可以使用此代码在特定时间自动刷新活动,如下所示

    首先,您可以使用标题的名称空间,如下所示

    import android.os.Handler;
    

    在创建^{的新实例之后

        private final Handler handler = new Handler();
    

    然后像下面那样为刷新编写一个one方法,并在OnCreate方法范围内调用,这里我使用了5000毫秒或5秒。你可以随心所欲地改变

    private void doTheAutoRefresh() {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                 // Write code for your refresh logic
                doTheAutoRefresh();
            }
        }, 5000);
    }
    

    自动刷新put方法的最终代码如下

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        doTheAutoRefresh();
    }