Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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在android上同时执行简单任务_Java_Android - Fatal编程技术网

如何使用java在android上同时执行简单任务

如何使用java在android上同时执行简单任务,java,android,Java,Android,我在一个活动中写作 我只想将这个活动的一个变量设置为true,等待5秒钟,然后将变量切换回false,而不冻结当前线程的执行 感谢您的帮助。我在谷歌上搜索了几个小时,尝试了各种方法都没有成功。您需要实现ASyncTask接口,在doInBackground方法中休眠,并在onPostExecute方法中更改变量 在您的类中,您有一个布尔变量 布尔bValue=false 然后在活动中添加一个私有类 private class sleepFiveTask extends AsyncTask<

我在一个活动中写作

我只想将这个活动的一个变量设置为true,等待5秒钟,然后将变量切换回false,而不冻结当前线程的执行


感谢您的帮助。我在谷歌上搜索了几个小时,尝试了各种方法都没有成功。

您需要实现ASyncTask接口,在doInBackground方法中休眠,并在onPostExecute方法中更改变量

在您的类中,您有一个布尔变量

布尔bValue=false

然后在活动中添加一个私有类

private class sleepFiveTask extends AsyncTask<Void, Void, Void> {

     protected void onPreExecute() {
         bValue = true;
     }

     protected void doInBackground(Void... params) {
         try {

              Thread.sleep(5000); //sleep for 5 seconds 
         } catch (InterruptedException e) {
              e.printStackTrace();
              // handle the exception...        
               // For example consider calling Thread.currentThread().interrupt(); here.
         }
     }

     protected void onPostExecute(Void result) {
         bValue = false;
     }
 }
当您想要执行它时,请运行

新的sleepFiveTask.execute


你可以从一个线程开始。例如:

boolean myvar = true;

new Thread(
  new Runnable() { 
    public void run() {
      SystemClock.sleep(5000);
      myvar = false;
    }
  }
}).start();

我想你要找的是这个任务


您是否尝试过将此作为背景任务运行?当切换到false时,终止任务。我尝试了此操作,但没有成功,我使用布尔and while循环设置任务是否完成。有许多帖子都是关于同一主题的,请说明为什么这些帖子失败了。。。如果您不这样做,您的问题可能会被标记下来。尝试了这个,冻结了当前线程的执行它没有任何意义。如果你的执行真的冻结了,一定是因为另一个原因,因为这会启动一个并行线程,而不是在主UI线程中运行。另外,你还有一个额外的},再次感谢你的回复,虽然我也这么认为,因为我通常用java编程这是我第一次尝试的,我的程序非常庞大,所以发布一个示例太困难了,我将尝试这个小规模,它应该工作没有缺点,并返回给你:再次感谢
 private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
     protected Long doInBackground(URL... urls) {
         int count = urls.length;
         long totalSize = 0;
         for (int i = 0; i < count; i++) {
             totalSize += Downloader.downloadFile(urls[i]);
             publishProgress((int) ((i / (float) count) * 100));
             // Escape early if cancel() is called
             if (isCancelled()) break;
         }
         return totalSize;
     }

     protected void onProgressUpdate(Integer... progress) {
         setProgressPercent(progress[0]);
     }

     protected void onPostExecute(Long result) {
         showDialog("Downloaded " + result + " bytes");
     }
 }
 new DownloadFilesTask().execute(url1, url2, url3);