Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.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_While Loop - Fatal编程技术网

Java 一段时间后怎么做?

Java 一段时间后怎么做?,java,android,while-loop,Java,Android,While Loop,我想这样做: @Override protected String doInBackground(Object... params) { int i = 0; int max = Integer.MAX_VALUE; GPSTracker gps = new GPSTracker(context); do { //Something } while(10 seconds); return null; } 如

我想这样做:

@Override
protected String doInBackground(Object... params) {     
    int i = 0;
    int max = Integer.MAX_VALUE;
    GPSTracker gps = new GPSTracker(context);
    do
    {
        //Something

    } while(10 seconds);

    return null;

}

如何在while语句中输入计数时间。我想在10秒钟内完成此操作。

要延迟执行,您可以
睡眠
线程:

Thread.sleep(timeInMills);
这一行可能引发线程异常,并且永远不应该在主UI线程上执行,因为它将导致应用程序停止与Android的通信,从而导致
ANR

要在单个活动的后台运行进程,您应该生成一个新的
线程

new Thread(){
    public void run(){
        //Process Stuff
    }
}.start();

如果希望此部分代码在应用程序的整个生命周期内运行,包括对用户隐藏时,则应考虑运行长寿命任务的服务。

要延迟执行,您可以
睡眠
线程:

Thread.sleep(timeInMills);
这一行可能引发线程异常,并且永远不应该在主UI线程上执行,因为它将导致应用程序停止与Android的通信,从而导致
ANR

要在单个活动的后台运行进程,您应该生成一个新的
线程

new Thread(){
    public void run(){
        //Process Stuff
    }
}.start();

如果您希望在应用程序的整个生命周期内运行此部分代码,包括对用户隐藏此部分代码时,您应该考虑为长期任务运行服务。

如果您希望定期运行任务,请使用。

如果您希望定期运行任务,使用。

方便的替代方法

Thread.sleep(timeInMillis)

这样单位就更明确,更容易推理

请注意,这两种方法都会引发InterruptedException,您必须处理它。你可以了解更多。如果像通常情况一样,您不想使用中断,也不想让代码被try/catch块弄乱,那么可以使用以下方法:

Uninterruptibles.sleepUninterruptibly(10, TimeUnit.SECONDS);

一个方便的替代方案

Thread.sleep(timeInMillis)

这样单位就更明确,更容易推理

请注意,这两种方法都会引发InterruptedException,您必须处理它。你可以了解更多。如果像通常情况一样,您不想使用中断,也不想让代码被try/catch块弄乱,那么可以使用以下方法:

Uninterruptibles.sleepUninterruptibly(10, TimeUnit.SECONDS);
您可以使用Thread.sleep();(不是很干净)

最好使用处理程序来执行此操作

例:

您可以使用Thread.sleep();(不是很干净)

最好使用处理程序来执行此操作

例:

我做到了:

long start = System.currentTimeMillis();
long end = start + 60*1000; // 60 seconds * 1000 ms/sec
while (System.currentTimeMillis() < end)
{
    // run
}
long start=System.currentTimeMillis();
长端=起点+60*1000;//60秒*1000毫秒/秒
while(System.currentTimeMillis()
谢谢你的回答。

我做到了:

long start = System.currentTimeMillis();
long end = start + 60*1000; // 60 seconds * 1000 ms/sec
while (System.currentTimeMillis() < end)
{
    // run
}
long start=System.currentTimeMillis();
长端=起点+60*1000;//60秒*1000毫秒/秒
while(System.currentTimeMillis()

感谢您提供的所有答案。

有人不使用服务吗?
睡眠
,对不起,没有在IDE中,无法记住呼叫:Dany不使用服务吗?
睡眠
,抱歉,不在IDE中,无法记住呼叫:我有第二个线程,我在AsysncTask类中执行。我想在几秒钟后停一会儿“做{//Something}while(10秒钟后);”这是从图书馆来的吗?不是,是从我正在做的一个应用程序来的。我想继续做直到10秒结束。我真的有第二个线程,我在一个AsysncTask类中做。我想在几秒钟后停一会儿“做{//Something}while(10秒钟后);”这是从图书馆来的吗?不是,是从我正在做的一个应用程序来的。我要继续做直到10秒结束。