如何在 Android 中进行大量计算时显示加载屏幕?
How to display a loading screen while doing heavy computing in Android?
我正在开发一个程序,可以在用户 phone 中搜索某个日期,这大约需要 2-3 秒。在进行计算时,我想显示一个加载屏幕,以便用户知道确实正在发生某些事情。但是,当我尝试在计算之前显示加载屏幕时,屏幕上没有显示任何内容。
这是我的:
ProgressDialog loading= new ProgressDialog(this);
loading.setTitle("Loading");
loading.setMessage("Please wait...");
loading.show();
//search stuff
loading.dismiss();
除此之外,我还尝试将 ProgressDialog 放入如下线程中,
new Thread(new Runnable(){
public void run(){
ProgressDialog loading= new ProgressDialog(this);//error here for "this"
loading.setTitle("Loading");
loading.setMessage("Please wait...");
loading.show();
}
});
//search stuff
但由于 "this" 关键字而失败,我相信是因为它指的是 Activity 而不是常规的 class,但我可能是错的...
如何让 ProgressDialog 正确显示?
尝试使用进度条传递新 class 的上下文(这会在您的主 activity 上进行)
NAME_OF_YOUR_CLASS context = new NAME_OF_YOUR_CLASS(getApplicationContext());
然后在您的 class 上调用这样的方法..(继续 class)
public Networking(Context c) {
this.context= c;
}
不要忘记将上下文设为字段(private final Context 上下文;)
希望这对您有所帮助
我也不知道这是否可行,但请尝试扩展 AsyncTask 并使用方法 运行 您的进度条。
尝试这样处理
mProgressDialog = ProgressDialog.show(this, "Please wait","Long operation starts...", true);
new Thread() {
@Override
public void run() {
//Do long operation stuff here search stuff
try {
// code runs in a thread
runOnUiThread(new Runnable() {
@Override
public void run() {
mProgressDialog.dismiss();
}
});
} catch (final Exception ex) {
}
}
}.start();
繁重的任务使用异步任务。将进度对话框代码放在 onPreExecute 方法中,进度对话框关闭代码放在 onPostExecute 方法中,所有繁重的任务放在 doInBackground 方法中。
我正在开发一个程序,可以在用户 phone 中搜索某个日期,这大约需要 2-3 秒。在进行计算时,我想显示一个加载屏幕,以便用户知道确实正在发生某些事情。但是,当我尝试在计算之前显示加载屏幕时,屏幕上没有显示任何内容。
这是我的:
ProgressDialog loading= new ProgressDialog(this);
loading.setTitle("Loading");
loading.setMessage("Please wait...");
loading.show();
//search stuff
loading.dismiss();
除此之外,我还尝试将 ProgressDialog 放入如下线程中,
new Thread(new Runnable(){
public void run(){
ProgressDialog loading= new ProgressDialog(this);//error here for "this"
loading.setTitle("Loading");
loading.setMessage("Please wait...");
loading.show();
}
});
//search stuff
但由于 "this" 关键字而失败,我相信是因为它指的是 Activity 而不是常规的 class,但我可能是错的...
如何让 ProgressDialog 正确显示?
尝试使用进度条传递新 class 的上下文(这会在您的主 activity 上进行)
NAME_OF_YOUR_CLASS context = new NAME_OF_YOUR_CLASS(getApplicationContext());
然后在您的 class 上调用这样的方法..(继续 class)
public Networking(Context c) {
this.context= c;
}
不要忘记将上下文设为字段(private final Context 上下文;)
希望这对您有所帮助
我也不知道这是否可行,但请尝试扩展 AsyncTask 并使用方法 运行 您的进度条。
尝试这样处理
mProgressDialog = ProgressDialog.show(this, "Please wait","Long operation starts...", true);
new Thread() {
@Override
public void run() {
//Do long operation stuff here search stuff
try {
// code runs in a thread
runOnUiThread(new Runnable() {
@Override
public void run() {
mProgressDialog.dismiss();
}
});
} catch (final Exception ex) {
}
}
}.start();
繁重的任务使用异步任务。将进度对话框代码放在 onPreExecute 方法中,进度对话框关闭代码放在 onPostExecute 方法中,所有繁重的任务放在 doInBackground 方法中。