2012-10-13 60 views
0

我有一个查询服务器数据库,并返回结果的列表中的活动......在查询应用程序的onCreate方法,像这样显示一个简单的progressDialog:删除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。

我必须走下缓存路线吗?还是有另一种方式?

+0

请参阅文档中的活动生命周期。没有进一步阐述你应该只是缓存数据。使用SQLite。 –

+0

那么这是做到这一点的唯一方法吗?只是想确认一下。 – Tkingovr

+0

使用永久性存储是唯一可靠的方法,但它不是唯一的方法。 –

回答

0

我设法解决这个问题,缺少的环节是,我不知道如何检查对话窗口下面的代码帮助:

//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.dismiss();

感谢您的贡献

0

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

2.)为了防止用户按下后退按钮时显示progressDialog,只需重写当前活动的onBackPressed()方法(当按下后退时)并将Intent设置为progresDialog前面的活动。我相信甚至有一种方法可以做到这一点,以便您不会启动该活动的新实例,而只需访问缓存版本。

相关问题