我有一个包含两个片段的活动,一个是图像列表,另一个是View图像片段,应该在单击图像时打开。 对于listview,我根据开发人员的文档使用asynctask来加载背景中的图像,并且它具有良好的响应性。顺便说一下,加载的图像都来自SD卡,不会下载。
这是我在详细信息片段中的onCreateView中的代码。
// Inflate the layout for this fragment
v = inflater.inflate(R.layout.fragment_view_image, container, false);
Log.d("ViewImage",mFilePath);
ImageView imageView = (ImageView)v.findViewById(R.id.viewImage1);
Bitmap bitmap = BitmapFactory.decodeFile(mFilePath);
imageView.setImageBitmap(bitmap);
Button CloseButton = (Button)v.findViewById(R.id.viewImageCloseButton);
CloseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mListener.closeViewImage();
}
});
它的工作正常。以下片段的屏幕截图。 screenshot
从活动中调用的closeViewImage()方法是
public void closeViewImage(){
if(mViewImageFragment != null){
mCamFragment = CamFragment.newInstance(" "," ");
getSupportFragmentManager().
beginTransaction().
replace(R.id.container,mCamFragment,"CAM").
commit();
mViewImageFragment = null;
}
}
我面临的问题是,当安装在具有实际快照的设备上时,如我们在快照中看到的那样点击“关闭”按钮,点击非常无响应。它并不完全抛出一个ANR,但有点像关闭片段需要2-3秒。
任何人都可以查看代码并评论我做错了吗?
注意: 当我从列表视图中单击图像时,片段的加载速度足够快。我知道在UI线程中处理位图是必需的并且会这样做,但是在使用位图中的图像关闭片段时必须做些什么呢?