【发布时间】:2013-04-28 17:00:11
【问题描述】:
我有一个Activity 和一个MapFragment,我使用FragmentTransaction 以编程方式将其添加到Activity:
private static final String MAP_FRAGMENT_TAG = "map";
private MapFragment mapFragment = null;
...
protected void onCreate(Bundle savedInstanceState) {
...
mapFragment = (MapFragment) getFragmentManager().findFragmentByTag(MAP_FRAGMENT_TAG);
if (mapFragment == null) {
mapFragment = MapFragment.newInstance();
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.fragment_wrapper, mapFragment, MAP_FRAGMENT_TAG);
fragmentTransaction.commit();
}
...
}
标准方式。然后我从mapFragment 获取GoogleMap 实例并设置它的设置,设置监听器,用它做一些事情。一切正常。
然后当用户完成地图时,AsyncTask 被触发以显示 ProgressDialog,执行一些操作,将不同的片段放入 fragment_wrapper 并再次关闭 ProgressDialog:
private class GetFlightsTask extends AsyncTask<Double, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// the activity context has been passed to the AsyncTask through its constructor
loadingFlightsSpinner = new ProgressDialog(context);
// setting the dialog up
loadingFlightsSpinner.show();
}
@Override
protected String doInBackground(Double... params) {
// some pretty long remote API call
// (loading a JSON file from http://some.website.com/...)
}
@Override
protected void onPostExecute(String flightsJSON) {
super.onPostExecute(flightsJSON);
// here I do stuff with the JSON and then I swtich the fragments like this
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
FlightsFragment fragment = new FlightsFragment();
fragmentTransaction.replace(R.id.fragment_wrapper, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
loadingFlightsSpinner.dismiss();
}
一切仍然正常。用户在FlightsFragment 中做了一些事情,然后可能决定返回地图。按下返回按钮,地图再次弹出。这是地图变得滞后的时候。它上面的国家/城市名称加载非常缓慢,它在移动地图时严重滞后......我不知道为什么,我没有做任何事情来弹出 MapFragment 回来。
有趣的是,它会在例如按下 home 按钮然后再次返回应用程序时得到修复...
我做错了什么?
感谢您的任何想法。
【问题讨论】:
-
修改后的代码没有问题。问题可能出在 AsyncTask 执行中。
-
请检查新的编辑,谢谢。
-
顺便说一句,将
ProgressDialog完全移动到AsyncTask也无济于事。 -
我非常感谢给问题投反对票的人告诉我它有什么问题,以便我可以编辑它......
标签: android android-fragments android-maps-v2