У меня есть объект с полем BitmapDrawable, который я хотел бы сериализовать. я реализовал пользовательские сериализации/десериализации со следующими методами:Пользовательский сериализационный пользовательский доступ к контексту
private void writeObject(ObjectOutputStream out) throws IOException {
out.defaultWriteObject();
art.getBitmap().compress(Bitmap.CompressFormat.WEBP, 100, out);
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
in.defaultReadObject();
art = new BitmapDrawable(BitmapFactory.decodeStream(in));
}
Это работает, за исключением того, что BitmapDrawable конструктор без ресурсов является устаревшим, и я хотел бы использовать предпочтительный конструктор. Что такое хороший способ получить контекст Android, переданный в readObject?
Использует ли ваш класс объектов 'Context' для чего-нибудь еще? Вы передаете его один в своем конструкторе? –
Нет, но если я передал его только для этого, потому что мне это нужно в методе readObject, я предполагаю, что не хочу сериализовать контексты, поэтому в readObject у меня не будет доступа к нему, правильно? – Nick
Справа, справа. Вы не можете сериализовать 'Context', даже если хотите. Возможно, вам придется изменить свой класс, чтобы сохранить только «битмап», и создать «BitmapDrawable» по мере необходимости. В противном случае вы можете просто застрять с устаревшим конструктором. –