저는 UI 스레드에서 AsyncTask를 단독으로 실행하는 두 가지 AsyncTask 활동이 있습니다. 그 중 하나는 훌륭하게 작동하고 progressBar를 표시하며 ProgressBar 메시지를 업데이트합니다. 이것은 내 SearchActivity를위한 것으로 실제로 검색 활동을 선언하기위한 Google Search 메타 데이터가 포함 된 검색 활동입니다. AsyncTask의 복제본을 만들고 doInBackground 코드 만 변경하고 SearchActivity를 복제하여 browseActivity라고했습니다.AsyncTask가 onPreExecute를 표시하지 않습니다.
항목을 클릭하면 listView를 확장하는 클래스에서 결과를 찾아 BrowseActivity를 시작합니다. 내가 의도 한 것은 AsyncTask의 onPreExecute 코드가 SearchActivity가 ListView 액티비티와 ListView가 onActivityResult를 시작할 ResultActivity 사이에 progressBar를 표시하는 것이 었습니다. onPreExcute 코드가 호출되었지만 ProgressBar가 표시되지 않습니다. (내가 제대로 UI 스레드에서 그것을 실행 생각?)
여기가 BrowseActivity입니다 : 첫째
@Override
protected void onListItemClick(ListView l, View v, final int position, long id) {
super.onListItemClick(l, v, position, id);
Intent i = new Intent(CategorySelectionView.this, BrowseActivity.class);
final Category[] categories = Category.values();
i.putExtra(Category.BUNDLE_TAG, categories[position].putExtra());
i.putExtra(Genre.BUNDLE_TAG, genre.putExtra());
CategorySelectionView.this.startActivityForResult(i, BrowseActivity.RESULT_REQUEST_CODE);
}
// Listen for results.
protected void onActivityResult(int requestCode, int resultCode, Intent data){
// See which child activity is calling us back.
switch (requestCode) {
case BrowseActivity.RESULT_REQUEST_CODE:
// This is the standard resultCode that is sent back if the
// activity crashed or didn't doesn't supply an explicit result.
if (resultCode == RESULT_CANCELED){
}
else {
ArrayList<SearchResult> recentQueryResults = (ArrayList<SearchResult>)data.getBundleExtra(
BrowseActivity.BUNDLE_KEY).getSerializable(BrowseActivity.SERIALIZABLE_KEY);
GlobalVars.setRecentQueryResults(recentQueryResults);
Category category = Category.getCategoryFromExtra(data.getStringExtra(Category.BUNDLE_TAG));
Intent i = new Intent(CategorySelectionView.this, RomListView.class);
i.putExtra(Category.BUNDLE_TAG, category.putExtra());
i.putExtra(Genre.BUNDLE_TAG, genre.putExtra());
startActivity(i);
}
default:
break;
}
}