Способ передать значение изображения? - PullRequest
0 голосов
/ 11 августа 2010

Как мне передать изображение на следующую страницу для Android?

Ответы [ 2 ]

1 голос
/ 11 августа 2010

У вас есть несколько вариантов здесь.

Я предполагаю, что под "следующей страницей" вы подразумеваете следующую активность?Я также предполагаю, что вы создали Bitmap из изображения.Bitmap реализует Parcelable, так что вы можете просто поместить его непосредственно в дополнения намерения.Это также позволяет поместить его в Bundle в методе onSaveInstanceState() вашей активности, поэтому он восстанавливается всякий раз, когда эта активность поворачивается или воссоздается по какой-либо другой причине.

Однако, если у вас большеодно изображение, это далеко не идеально, так как вам нужно сериализовать и десериализовать все ваши изображения каждый раз, когда вы переключаетесь между действиями.Если вы где-то получили изображение из файловой системы или получили ContentProvider, например MediaStore, у вас будет Uri.Таким образом, вы можете просто вставить Uri в намерение, а затем воссоздавать растровое изображение каждый раз при загрузке действия.Преимущество этого состоит в меньшем количестве сериализованных данных, но это еще хуже с точки зрения обработки, потому что теперь вам приходится каждый раз читать из файловой системы и распаковывать образ.

Поэтому, если вы обеспокоеныпроизводительность, единственный хороший метод - сохранить изображения в статической переменной, чтобы к ним могли обращаться ваши другие действия.Таким образом, оба действия на самом деле используют одно и то же изображение, а не дублируют его, тем самым экономя память.Единственный недостаток этого подхода заключается в том, что вы не сможете запустить упражнение в новом задании.Все действия, которые используют образ, должны выполняться в одном и том же процессе.Кроме того, если вы вручную перерабатываете изображение, когда закончите (с помощью метода Bitmap.recycle()), вам придется убедиться, что никто не использует изображение, прежде чем перерабатывать его.

ЛичноМногие из моих приложений загружают изображения с сервера, и я сохраняю все HTTP-ответы в кеше, поэтому, когда мне нужно одно из этих изображений, я повторно запрашиваю его из кеша.Кэш является одноэлементным, поэтому к нему можно получить доступ из любого из моих действий.

0 голосов
/ 11 августа 2010

У вас есть пример кода для передачи значения изображения?Будет ли это работать?

Intent i = new Intent(Moods.this, New_Entry.class);
                    Bundle f = new Bundle();
                    f.putString("image", img);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...