我一直在试图优化它加载了一堆砖妆容大位图的我的单线程应用程序。 该应用程序变得非常缓慢时,它会载入新砖到系统内存。 林现在正在尝试使用异步任务用于此目的。 该应用程序检测哪个瓦片是留在一个由所谓的onDraw方法上,创建一个包含在资产文件夹中的位图的路径的字符串,然后检查是否位图绘制之前空。 如果为空,将其加载到内存中。 我的想法是在处理的DoBackground位图,并在postExecute触发视图无效,显示异步加载位图。 几个问题:
1)我可以执行我的任务异步每个位图? (下面的语句:新myAsyncTaskManager()执行(bitmapPath);如果没有,什么是去了解它,因为唯一异步会做的位图只是加载到内存的最好方法?
2)是否有可能设置优先级的AsyncTask如果位图加载速度太慢?
3)是否有更好的方式去这件事吗? IM一定是位图加载,而不是减慢应用画布绘制。
我暂时异步代码:
private class myAsyncTaskManager extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... bitmapPath) {
Log.e("sys","i ran using aTask");
try {
bitmapArray[rectBeingDrawn] = BitmapFactory.decodeStream(assetManager.open(imagePathToLoad));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return null;
}
@Override
protected void onPostExecute(String result) {
// execution of result of Long time consuming operation
mCampusMap.invalidate();
}
}