Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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在循环中等待X时间_Java_Android_Multithreading_Loops_Thread Sleep - Fatal编程技术网

使用JAVA/Android在循环中等待X时间

使用JAVA/Android在循环中等待X时间,java,android,multithreading,loops,thread-sleep,Java,Android,Multithreading,Loops,Thread Sleep,在我的代码中,我想检查经度和纬度值。如果值为空,代码将检查15秒。如果收到值,while循环将中断并显示“youwin”。如果它们仍然为空,则在15秒后应显示“gps错误”。 问题是代码正在完美地等待,但进度条没有显示在屏幕上,因为屏幕在等待期间卡住了。15秒后,屏幕空闲。请告诉我如何解决这个问题。谢谢 @Override public void onClick(View arg0) { // TODO Auto-g

在我的代码中,我想检查经度和纬度值。如果值为空,代码将检查15秒。如果收到值,while循环将中断并显示“youwin”。如果它们仍然为空,则在15秒后应显示“gps错误”。 问题是代码正在完美地等待,但进度条没有显示在屏幕上,因为屏幕在等待期间卡住了。15秒后,屏幕空闲。请告诉我如何解决这个问题。谢谢

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Toast.makeText(getBaseContext(), longitude.getText(), Toast.LENGTH_LONG).show();
                 Toast.makeText(getBaseContext(), latitude.getText(), Toast.LENGTH_LONG).show();
                pBar = new ProgressDialog(oproprietor.this);
                pBar.setCanceledOnTouchOutside(false);
                pBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                pBar.setMessage("Waiting 15 seconds");
                pBar.show();

                 long t= System.currentTimeMillis();
                 long end = t+15000;
                 while(System.currentTimeMillis() < end) {


                        if(!longitude.getText().equals("") || !latitude.getText().equals("") ){

                           pBar.dismiss();
                                break;
                                }
                        else continue;


                 }
                 if(longitude.getText().equals("") || latitude.getText().equals("")){

                             pBar.dismiss();
                        Toast.makeText(oproprietor.this, "Error in gps", Toast.LENGTH_LONG).show();



                        }
                 else if(!longitude.getText().equals("") || !latitude.getText().equals("") ){

                     pBar.dismiss();
                     Toast.makeText(oproprietor.this, "You win", Toast.LENGTH_LONG).show();
                        }
            }

         });
@覆盖
公共void onClick(视图arg0){
//TODO自动生成的方法存根
Toast.makeText(getBaseContext(),longitude.getText(),Toast.LENGTH_LONG.show();
Toast.makeText(getBaseContext(),latitude.getText(),Toast.LENGTH_LONG.show();
pBar=新进度对话框(Opropriotor.this);
pBar.SetCanceledOnTouchOut(假);
pBar.setProgressStyle(ProgressDialog.STYLE_微调器);
pBar.setMessage(“等待15秒”);
pBar.show();
long t=System.currentTimeMillis();
长端=t+15000;
while(System.currentTimeMillis()
尝试在线程中运行它

//注意:将ProgressDialog进度声明为类中的字段

progress = ProgressDialog.show(this, "dialog title",
  "dialog message", true);

new Thread(new Runnable() {
  @Override
  public void run()
  {
    // do the thing that takes a long time

    runOnUiThread(new Runnable() {
      @Override
      public void run()
      {
        progress.dismiss();
      }
    });
  }
}).start();

由于这是Android,我绝对建议在线程上使用
AsyncTask
。有关于如何安全操作的所有相关细节。当您从外部线程与UI线程交互时,使用Java线程/
Runnable
会在android中引入一些UI问题。

while循环和break或IF语句在哪里。。你能在我的代码中编辑吗?谢谢你,做一件需要很长时间的事,用你的循环替换这个注释。我真想知道人们认为他们的IDE生成的自动生成方法存根是用来做什么的。他们担心如果他们把它拿出来,密码会被破解吗?他们只是看不到吗?我个人觉得这会让代码看起来更干净,但这只是我的观点。