您的位置:首页 > 移动开发 > Android开发

【Android】RecyclerView卡顿问题jerky

2015-11-13 10:50 381 查看
解决RecyclerView卡顿的问题,找过很多问题的引发点,最后的解决灵感来自于这里:

onBindView里的IO操作导致RecyclerView scroll 卡顿

在项目中查找,发现onBindView中多图片使用Glide加载时确实是有保存bitmap到文件的IO操作,将IO操作注释掉,运行App,卡顿消失,这样,开始对IO动刀;

首先想到,每个IO操作新开线程来处理,为加快线程速度,保证预期效果不打太大折扣,想到利用ThreadPoolExecutor或者是ExecutorService进行

代码:

/*
* 保存 bitmap到文件,并将文件路径返回,利用线程池新开IO线程,解决滚动时卡顿的问题
* */
public static String getFilePath(final Bitmap bitmap, String fileName) {

final File picDir = Environment.getExternalStoragePublicDirectory(AppConfig.DIR_ROOT_PIC);
final File f = new File(picDir, fileName + AppConfig.FILE_NAME_EXTENSION_PIC);
try {
final FileOutputStream fOut = new FileOutputStream(f);
App.getThreadPool().execute(new Runnable() {
@Override
public void run() {
try {
f.createNewFile();
bitmap.compress(Bitmap.CompressFormat.PNG, 30, fOut);
try {
fOut.flush();
} catch (IOException e) {
e.printStackTrace();
}
try {
fOut.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
});
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return f.getAbsolutePath();
}


这样,就在保证recyclerView平滑滚动的同时,保存了Bitmap到本地。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android