Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓系统:;“自动刷新”;过了一段时间_Java_Android_Multithreading_Runnable - Fatal编程技术网

Java 安卓系统:;“自动刷新”;过了一段时间

Java 安卓系统:;“自动刷新”;过了一段时间,java,android,multithreading,runnable,Java,Android,Multithreading,Runnable,我已经搜索了如何为我的程序执行“自动刷新”或可运行的方法,我看到了一些关于处理程序和线程的帖子。。。 我认为我搜索的是一个线程,但我不能让程序工作。。。 让我向您展示一些代码: refresh.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { getUrlText(); if (time.getTex

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

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

这里有一种方法

在活动中声明以下内容:

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
。希望这是有意义的。

1。创建处理程序

Handler handler = new Handler();
2。创建可运行对象

public final Runnable runnable = new Runnable() {

    @Override
    public void run() {
        // your code while refreshing activity
    }
};
handler.postDelayed(runnable, 3000);
3。处理程序对象的调用方法

public final Runnable runnable = new Runnable() {

    @Override
    public void run() {
        // your code while refreshing activity
    }
};
handler.postDelayed(runnable, 3000);
//3000是以毫秒为单位的时间

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


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

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

import android.os.Handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    doTheAutoRefresh();
}
首先,您可以使用标题的名称空间,如下所示

import android.os.Handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    doTheAutoRefresh();
}
创建
处理程序的新实例后

    private final Handler handler = new Handler();
然后编写一个用于刷新的one方法,如下所示,并调用
OnCreate
methodscope,这里我使用了5000毫秒或5秒。你可以随心所欲地改变

private void doTheAutoRefresh() {
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
             // Write code for your refresh logic
            doTheAutoRefresh();
        }
    }, 5000);
}
自动刷新put方法的最终代码如下

import android.os.Handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    doTheAutoRefresh();
}

对于这样的事情,你最好使用。