Java 当用户按下后退按钮时删除ProgressDialog

Java 当用户按下后退按钮时删除ProgressDialog,java,android,Java,Android,我有一个查询服务器数据库并返回结果列表的活动…当查询应用程序时,会在onCreate方法上显示一个简单的progressDialog,如下所示: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //display progress dialog while querying server for values final ProgressDialo

我有一个查询服务器数据库并返回结果列表的活动…当查询应用程序时,会在onCreate方法上显示一个简单的progressDialog,如下所示:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

//display progress dialog while querying server for values
        final ProgressDialog dialog = ProgressDialog.show(this,"","Retrieving listings please wait...");
        dialog.setCancelable(true);
        dialog.show();
如果用户单击列表中的项目,则会打开另一个activity placeDetails。完成后,用户可以按“上一步”按钮返回上一个显示列表的活动

当我自然地测试它时,它会显示上面的对话框,并将查询发送回服务器,即使可以在progressDialog的后台看到列表

我想知道的是,当用户按下后退按钮时,如何防止再次查询数据库和显示上面的progressDialog

我必须走缓存路线吗?或者有其他方法吗?

1。)为了防止再次查询数据库,您可以简单地将这些数据缓存在本地SQLite数据库中,正如Tom Dignan提到的那样


2.)要防止用户按下后退按钮时显示progressDialog,只需覆盖当前活动的onBackPressed()方法(按下后退时),并为progressDialog之前的活动设置一个意图。我相信甚至有一种方法可以做到这一点,这样您就不会启动该活动的新实例,而只是访问缓存版本。

我设法解决了这个问题缺少的链接是我不知道如何检查对话框窗口以下代码有帮助:

//first declare the dialog so its accessible globally through out the class
public class ListPlaces extends ListActivity {
 ProgressDialog dialog;
然后在onCreate上,首先检查对话框是否存在

if(dialog == null){
            dialog = ProgressDialog.show(this,"","Retrieving listings please wait...");
            //display progress dialog while querying server for values
            dialog.setCancelable(true);
            dialog.show();
        } 
错误是我用了

dialog.hide();
而不是 dialog.dismise()


感谢您的贡献

请参阅文档中的活动生命周期。不需要进一步详细说明,您只需缓存数据即可。使用SQLite。那么这是唯一的方法吗?我只是想确认一下,使用持久存储是唯一可靠的方法,但不是唯一的方法。