Я пытался оптимизировать свое однопоточное приложение, которое загружает кучу плиток, образующих большое растровое изображение.Приложение становилось очень вялым, когда оно загружало новые плитки в системную память.Сейчас я пытаюсь использовать Async Tasks для этой цели.Приложение определяет, какая плитка находится в верхнем левом углу в методе, вызываемом onDraw, создает строку, которая содержит путь к растровому изображению в папке «Ресурсы», а затем проверяет, является ли растровое изображение нулевым, перед рисованием.Если он нулевой, он загрузит его в память.Моя идея состояла в том, чтобы обработать растровое изображение в DoBackground, а в postExecute вызвать недействительное представление для отображения асинхронного загруженного растрового изображения.Несколько вопросов:
1.) Могу ли я выполнить свою задачу aSync для каждого растрового изображения?(это утверждение: new myAsyncTaskManager (). execute (bitmapPath); если нет, то как лучше всего это сделать, поскольку единственное, что делает aSync, это просто загружает растровые изображения в память?
2.)можно установить приоритет aSyncTask, если растровые изображения загружаются слишком медленно?
3.) Есть ли лучший способ сделать это?я уверен, что именно растровая загрузка, а не холст, замедляет работу приложения.
Мой временный код aSync:
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();
}
}