这是我的问题:我想显示一个布局,说明(当应用程序启动时)数据库正在更新。更新周期完成后,我想使用“add_multiple_categories_layout(0)”方法以不同的布局加载数据。我只需要在应用程序启动时这样做;之后更新应该在后台运行,用户可以使用该应用程序。
为此,我创建了一个布尔 DBupdated,并在 1 个更新周期后将其设置为 true,并且新布局替换了“正在更新数据库...”布局。
当活动恢复时,它应该再次显示“正在下载数据库......”因此在 onResume 中我将 DBupdated 更改为 false。
它在我启动应用程序时有效,但在恢复后它不会从“正在下载 db ...”更改布局,就好像布尔值保持为真,即使我在 onResume 中更改它。
这是代码:
protected void onResume() {
super.onResume();
setContentView(R.layout.home_screen_layout);
add_downloading_DB_layout();
DBupdated = false;
new UpdateDB().execute(CATEGORY_URL, PRODUCTS_URL, TIMESTAMP_URL_CATEGORIES, TIMESTAMP_URL_PRODUCTS);
}
public class UpdateDB extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
int whatToUpdate;
while( 1+1 == 2 ){
//update the database
if(DBupdated==false)
{
DBupdated = true;
publishProgress();
}
try { Thread.sleep(36000000); } catch (InterruptedException e) {e.printStackTrace();}
}
}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
add_multiple_categories_layout(0);
}
}