使用JAVA/Android在循环中等待X时间
在我的代码中,我想检查经度和纬度值。如果值为空,代码将检查15秒。如果收到值,while循环将中断并显示“youwin”。如果它们仍然为空,则在15秒后应显示“gps错误”。 问题是代码正在完美地等待,但进度条没有显示在屏幕上,因为屏幕在等待期间卡住了。15秒后,屏幕空闲。请告诉我如何解决这个问题。谢谢使用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
@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生成的自动生成方法存根是用来做什么的。他们担心如果他们把它拿出来,密码会被破解吗?他们只是看不到吗?我个人觉得这会让代码看起来更干净,但这只是我的观点。