尝试关闭线程内的 ProgressDialog 时出现黑屏
Black Screen when trying to dismiss ProgressDialog inside a Thread
第一个问题是 ProgressDialog 没有显示。然后我读到我应该创建一个线程。我创建了线程并且它起作用了。但现在我不能关闭 ProgressDialog。应用崩溃,黑屏
xGrava.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final ProgressDialog PD = ProgressDialog.show(NovaOcc.this,"","");
PD.setContentView(R.layout.ipp_load);
PD.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
Thread mThread = new Thread() {
@Override
public void run() {
if (ValidaDados() == true) {
if (GravaDados() == true) {
xGrava.setVisibility(View.GONE);
PD.dismiss();
}
}
}
};
mThread.start();
}
});
据我所见,我猜是 Android。
一般我们在有长进程到运行的时候使用Threads,不想让viewUI因为是UIThread运行ning而卡死。
所以要回答这个问题,请确保在视图上调用任何操作时,在“运行OnUIThread”上执行
例如这里,一旦您的 Thread 完成了“长”任务,您可以这样做:
xGrava.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final ProgressDialog PD = ProgressDialog.show(NovaOcc.this,"","");
PD.setContentView(R.layout.ipp_load);
PD.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
Thread mThread = new Thread() {
@Override
public void run() {
if (ValidaDados() == true) {
if (GravaDados() == true) {
runOnUiThread(new Runnable() {
@Override
public void run() {
xGrava.setVisibility(View.GONE);
PD.dismiss();
}
}
);
}
}
}
};
mThread.start();
}
});
第一个问题是 ProgressDialog 没有显示。然后我读到我应该创建一个线程。我创建了线程并且它起作用了。但现在我不能关闭 ProgressDialog。应用崩溃,黑屏
xGrava.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final ProgressDialog PD = ProgressDialog.show(NovaOcc.this,"","");
PD.setContentView(R.layout.ipp_load);
PD.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
Thread mThread = new Thread() {
@Override
public void run() {
if (ValidaDados() == true) {
if (GravaDados() == true) {
xGrava.setVisibility(View.GONE);
PD.dismiss();
}
}
}
};
mThread.start();
}
});
据我所见,我猜是 Android。 一般我们在有长进程到运行的时候使用Threads,不想让viewUI因为是UIThread运行ning而卡死。
所以要回答这个问题,请确保在视图上调用任何操作时,在“运行OnUIThread”上执行
例如这里,一旦您的 Thread 完成了“长”任务,您可以这样做:
xGrava.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final ProgressDialog PD = ProgressDialog.show(NovaOcc.this,"","");
PD.setContentView(R.layout.ipp_load);
PD.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
Thread mThread = new Thread() {
@Override
public void run() {
if (ValidaDados() == true) {
if (GravaDados() == true) {
runOnUiThread(new Runnable() {
@Override
public void run() {
xGrava.setVisibility(View.GONE);
PD.dismiss();
}
}
);
}
}
}
};
mThread.start();
}
});