我有两个活动。当我通过意图切换到第二个活动时,需要3-4秒钟,因为它具有许多组件,这些组件使用适配器从SQLite中获取数据等。因此,我想在切换时显示进度对话框。
我已经挖掘了关于此目的的话题,并尝试了其中的许多方法:
1-) 在第二个活动上使用AsyncTask。它不会在我单击组件以切换到第二个活动时立即显示进度对话框。它会等待3-4秒钟,然后进度对话框出现不到一秒钟,这是不友好的方式。
2-) 在第一个活动上使用AsyncTask。它在我单击该组件时立即显示,但进度轮不会旋转。进度对话框会冻结。
3-) 在第二个活动的onStart()方法上使用AsyncTask。这会导致第一种方式。
下面的代码实现了上述第二种方式,在第一个活动上使用AsyncTask。
我曾尝试在onPostExecute中调用startActivity,但没有成功。因此,我正在等待您对此问题的意见和建议,非常感谢您的帮助。
谢谢。
我已经挖掘了关于此目的的话题,并尝试了其中的许多方法:
1-) 在第二个活动上使用AsyncTask。它不会在我单击组件以切换到第二个活动时立即显示进度对话框。它会等待3-4秒钟,然后进度对话框出现不到一秒钟,这是不友好的方式。
2-) 在第一个活动上使用AsyncTask。它在我单击该组件时立即显示,但进度轮不会旋转。进度对话框会冻结。
3-) 在第二个活动的onStart()方法上使用AsyncTask。这会导致第一种方式。
下面的代码实现了上述第二种方式,在第一个活动上使用AsyncTask。
public void toVisitRegister(Event event) { //Switching to the second activity
new startingThread().execute();
Intent toVisitRegister = new Intent(MainCalendar.this, VisitRegister.class);
startActivity(toVisitRegister);
finish();
}
这里是AsyncTask
public class startingThread extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
startingProgress = new ProgressDialog(MainCalendar.this);
startingProgress.setTitle("Visit Register");
startingProgress.setMessage("Initializing...");
startingProgress.show();
}
@Override
protected String doInBackground(String... params) {
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if(MainCalendar.this.startingProgress != null) {
MainCalendar.this.startingProgress.dismiss();
}
}
}
我曾尝试在onPostExecute中调用startActivity,但没有成功。因此,我正在等待您对此问题的意见和建议,非常感谢您的帮助。
谢谢。
((Activity)mContext).finish();
- user370305onCreate()
中启动AsyncTask
,并在AsyncTask
中执行所有繁重的工作,当它完成时更新VisitRegister UI
。这样,在切换活动时所需的时间就会变少。 - user370305