碎片与MapView滞后/断续加载 - 预加载?

时间:2014-12-03 09:37:11

标签: android android-fragments android-mapview

我的应用程序中有一个相当简单的片段,它有两个edittext字段(地址输入)和一个MapView。加载片段后,它会冻结一小段时间 - 显然是在加载/膨胀或初始化MapView时。

在片段的onCreateView中,当前发生以下情况:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.fragment_search_place, container, false);

    mMapView = (MapView) v.findViewById(R.id.mapview);
    mImageContinue = (ImageView) v.findViewById(R.id.img_continue);
    mEditFrom = (ClearableEditText) v.findViewById(R.id.clearedit_from);
    mEditTo = (ClearableEditText) v.findViewById(R.id.clearedit_to);
    mButtonSwitch = (ImageButton) v.findViewById(R.id.btn_swap);


    mMapView.onCreate(savedInstanceState);

    mMap = mMapView.getMap();
    MapsInitializer.initialize(getActivity());

    mEditFrom.addTextChangedListener(mEditTextWatcherFrom);
    mEditTo.addTextChangedListener(mEditTextWatcherTo);

    if(mInteractionListener != null) {
        String[] add = mInteractionListener.getAddresses();
        if(add != null) {
            mEditFrom.setText(add[0]);
            mEditTo.setText(add[1]);
        }
    }

    mButtonSwitch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // swap from and to.
            String tmp = mEditFrom.getText();
            mEditFrom.setText(mEditTo.getText());
            mEditTo.setText(tmp);
            tmp = null;
        }
    });

    mImageContinue.setOnClickListener(this);

    return v;
}

我基本上只是查找我的视图并设置一些监听器,检查父活动(mInteractionListener)是否已经为EditText字段保存了变量 - 并初始化MapView。

是否有一种相当简洁的方法来初始化MapView异步或某处,除了在UI线程上?目前,在提交FragmentTransaction时,UI(尤其是NavigationDrawer)会在短时间内冻结,这看起来并不好看。

0 个答案:

没有答案