AsyncTaskLoader减慢了片段选项卡转换(跳过的帧)

时间:2018-01-05 16:07:04

标签: android android-fragments asynctaskloader

由于某些原因,我的标签转换不顺畅。我在两个独立的片段(1& 2)中编写了两个单独的AsyntTaskLoader,以便从WEB API读取数据(按钮点击)。

一旦数据加载到第二个片段,前一个选项卡就会变慢(反之亦然)。但是当装载机被摧毁时,过渡是顺利的。

公共类Fragment1 extends Fragment实现了LoaderManager.LoaderCallbacks {

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

    if(getLoaderManager().getLoader(0)!=null){
        getLoaderManager().initLoader(0,null,this);
    }

     Submit.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
             if(some condition) {

            }

            else{
                stopLoader();
            }
        }
    });

}

@Override
public Loader<String> onCreateLoader(int id, Bundle args) {
    return new GetDataFromLoader1(getContext(), args.getString("String"));
}

@Override
public void onLoadFinished(Loader<String> loader, String data) {
    try {
        //Read parsed JSON object from LoadInBackground

    }catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
public void onLoaderReset(Loader<String> loader) {       
}


 void stopLoader() {
    getLoaderManager().destroyLoader(0);       
}}

编舞:跳过31帧!应用程序可能在其主线程上做了太多工作。在“MyBitmap = obj.getBitmap();”中读取此行时在JSON对象

1 个答案:

答案 0 :(得分:0)

加载程序将所有辛苦工作卸载到后台线程,这很好,并且不会导致应用程序UI出现故障。

但是,我怀疑因为你的加载器只加载String JSON并在主线程上解析它,这会导致你的UI丢帧或变得不平滑。

尝试返回从加载器解析的模型,而不是在onLoadFinished中解析结果。并在loadInBackground

中进行加载和解析