В нашем приложении нам нужно отправить растровое изображение из одного класса активности в другое действие после выполнения некоторой обработки изображений. Мы называем методы в первом действии, а затем хотим показать выходное изображение во втором действии. У двух классов активности есть разные макеты xml файлов. Как мы можем это сделать?
Растровое изображение можно использовать как EboMike, поэтому в первом упражнении вы можете сделать это:
Intent intent = new Intent(this,SecondActivity.class);
intent.putExtras("MYBITMAP",yourImage);
startActivity(intent);
и в вашем SecondActivity добавьте этот код:
Bitmap imageToDisplay = (Bitmap) this.getIntent().getExtras("MYBITMAP");
//and then you can display it in your imageView :)
Растровое изображение является простым, поэтому вы можете отправить его в качестве дополнительного, НО это плохая идея, если ваш растровый файл большой - он может не работать на старых телефонах, у которых не так много оперативной памяти.
Если у вас действительно большие растровые изображения, вы должны подумать о том, чтобы записать их во внутреннее хранилище по мере их переноса. Это также относится к случаю, когда пользователь временно переключается на другое приложение (например, входящий телефонный звонок), а затем возвращается к вашему приложению, которое, возможно, было завершено в этот момент.
Если действия находятся в одном и том же apk, лучший способ - просто использовать статическую переменную.
Вы будете обрабатывать растровый объект (из холста?)
class Globals {
public static BitmapDrawable processedBitmapDrawable=null;
}
.... в процессе:
Bitmap processedBitmap = canvas.getBitmap();
Globals.processedBitmapDrawable = new BitmapDrawable(processedBitmap);
...
во второй степени:
if (Globals.processedBitmapDrawable!=null) {
imageView.setDrawable(Globals.processedBitmapDrawable);
}
кажется (и есть) простым, но наилучшим способом, поскольку он сохраняет обработку/загрузку растрового изображения несколько раз.
Вы также можете использовать SoftReference<Bitmaprawable>
, что позволяет сборку мусора очищать ссылку, если она необходима. хотя вам может потребоваться перезагрузка/повторная регистрация, если вам это нужно еще раз.