由于某些原因,我的标签转换不顺畅。我在两个独立的片段(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对象
中答案 0 :(得分:0)
加载程序将所有辛苦工作卸载到后台线程,这很好,并且不会导致应用程序UI出现故障。
但是,我怀疑因为你的加载器只加载String JSON并在主线程上解析它,这会导致你的UI丢帧或变得不平滑。
尝试返回从加载器解析的模型,而不是在onLoadFinished
中解析结果。并在loadInBackground