여기 내 문제가 있습니다 : (응용 프로그램이 시작될 때) 데이터베이스가 업데이트되고 있음을 나타내는 레이아웃을 표시하고 싶습니다. 업데이트주기가 끝난 후 "add_multiple_categories_layout (0)"메서드를 사용하여 다른 레이아웃의 데이터를로드하려고합니다. 앱이 시작될 때만 필요합니다. 그 후 업데이트는 백그라운드에서 실행되어야하며 사용자는 앱을 사용할 수 있습니다.안드로이드 AsyncTask 및 응용 프로그램이 포 그라운드에서 돌아 왔을 때 onResume
이렇게하려면 DBupdated 및 1 업데이트주기 후 true로 설정되고 새 레이아웃이 "데이터베이스 업데이트 중 ..."레이아웃 대신 바뀝니다.
활동이 재개되면 "데이터베이스 다운로드 중 ..."이 다시 표시되어야합니다. 따라서 onResume에 DBupdated가 false로 변경되었습니다.
앱을 시작할 때 작동하지만 다시 시작한 후에는 onResume에서 부울 값을 true로 유지하는 것처럼 "download db ..."에서 레이아웃을 변경하지 않습니다.
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);
}
}
디버거 또는 로깅을 사용하여'add_multiple_categories_layout()'이 호출 될 때 (그리고 호출 될 때 /) 'DBupdated'가 올바른 값을 갖는지 확인하십시오. 또한'add_multiple_categories_layout()'의 코드를 보여 주어야합니다. –
로그하고 보려고합니다. add_multiple_categories_layout()은 앱을 시작할 때 호출됩니다. 그러나 앱을 다시 시작한 후 다시 열 때 앱이 변경되지 않습니다 (실제로 앱이 실행되지 않는 한). –