Android 准备显示其他活动时如何显示ProgressDialog?

Android 准备显示其他活动时如何显示ProgressDialog?,android,dialog,progressdialog,android-progressbar,Android,Dialog,Progressdialog,Android Progressbar,如果用户长时间单击列表项,我需要使用MapView显示活动。 这个过程需要一段时间,所以我想在应用程序挂起时显示user progressdialog。 代码如下: ListView listView = (ListView) findViewById(android.R.id.list); listView.setOnItemLongClickListener (new OnItemLongClickListener() { public boolean onItemLongClick(Ada

如果用户长时间单击列表项,我需要使用MapView显示活动。 这个过程需要一段时间,所以我想在应用程序挂起时显示user progressdialog。 代码如下:

ListView listView = (ListView) findViewById(android.R.id.list);
listView.setOnItemLongClickListener (new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView parent, View view, int position, long id) {
...
  ProgressDialog dialog = ProgressDialog.show(getApplicationContext(), "", "Loading. Please wait...", true);
  Intent intent = new Intent(getBaseContext(), Map.class);
  startActivity(intent);
我选择了正确的方法吗?立即获取不同的FCs(取决于为ProgressDialog选择的上下文)。ProgressBar可以在我的场景中显示吗


Upd。我试着在开始活动前向大家敬酒。同样,仅当地图已显示时,才会显示Toast。我不明白会发生什么。如果我删除startActivity代码,则会立即显示Toast。

是否在MapView的onCreate()中进行长时间准备?您不应该这样做,因为它会阻止UI线程

相反,您应该做的是在映射活动的onCreate()内部生成一个新的AsyncTask(理想情况下)并在那里显示进度条(并在显示进度条后立即退出onCreate()。然后在AsyncTask完成后(在postExecuted()中),您应该关闭进度对话框并显示映射。PostExecuted()在UI线程中运行,因此您可以安全地关闭进度条


您拥有的FCs和可能的ANR(无响应)都可能会出现,因为您在UI线程内外做了某些事情。您应该在UI线程中创建/取消UI组件,并且不应该在UI线程中运行长操作。这是经验法则。

您是否在MapView的onCreate()中进行长时间准备?您不应该这样做,因为它会阻止UI线程

相反,您应该做的是在映射活动的onCreate()内部生成一个新的AsyncTask(理想情况下)并在那里显示进度条(并在显示进度条后立即退出onCreate()。然后在AsyncTask完成后(在postExecuted()中),您应该关闭进度对话框并显示映射。PostExecuted()在UI线程中运行,因此您可以安全地关闭进度条


您拥有的FCs和可能的ANR(无响应)都可能会出现,因为您在UI线程内外做了某些事情。您应该在UI线程中创建/取消UI组件,并且不应该在UI线程中运行长操作。这是经验法则。

谢谢你的回复。实际上,如果我在onCreate()上什么也不做,只是显示映射,它仍然会挂起一段时间。看起来加载映射活动本身需要很多时间。我应该尝试在ASyncTask中启动该活动吗?好的,ASyncTask的使用很有帮助。谢谢您的回复。实际上,如果我在onCreate()上什么也不做,只是显示映射,它仍然会挂起一段时间。看起来加载映射活动本身需要很多时间。我是否应该尝试在ASyncTask中启动该活动?好的,使用ASyncTask会有所帮助。