android 怎么将一个类中的arraylist<bitmap>序列化。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 怎么将一个类中的arraylist<bitmap>序列化。相关的知识,希望对你有一定的参考价值。
我让这个类实现Parcelable接口,然后让bitmap可序列化,用arraylist来add,可是结果依然是没有序列化成功。
这个问题我已经解决了,android序列化有两种方式,一种是来自于java的实现Serializable,还有一种是android特有的实现Parcelable,我最开始选用实现Parcelable是因为他性能更好些。
解决办法就是将Arraylist<bitmap>换成Arraylist<MyBitmap>,自定义可序列化的MyBitmap类,将bitmap存放为byte[] bitmapBytes,需要bitmap的时候直接调用相应的方法将byte[] bitmapBytes转换成bitmap。
例如:public static void main(String[] args) throws IOException
List<Date> list=new ArrayList<Date>();
Date now=new Date();
list.add(now);
list.add(new Date(now.getTime()+8888888));
ByteArrayOutputStream byteStream=new ByteArrayOutputStream();
ObjectOutput output=new ObjectOutputStream(byteStream);
output.writeObject(list);
byte b[]=byteStream.toByteArray();
BASE64Encoder base64Encoder=new BASE64Encoder();
String cookieString=base64Encoder.encode(b);
System.out.println("经过BASE64编码的Cookie:\\n"+cookieString);
System.out.println("\\n开始解码");
BASE64Decoder base64Decoder=new BASE64Decoder();
byte buf[]=base64Decoder.decodeBuffer(cookieString);
ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(buf);
ObjectInput input=new ObjectInputStream(byteArrayInputStream);
List<Date> afterList=(List<Date>) input.readObject();
for (Date date : afterList)
System.out.println(date);
补充:Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
参考技术B 序列化不是实现Serializable接口么本回答被提问者采纳Android 中如何在java类中调用activity 中的一个方法?
我导入一个jar包,需要用到这个jar包里面MainActivity的一个方法,这是一个activity好像不能new的方法实例化,然后调用它的方法,请问这个要怎么调用?
通常,您不应该以这种方式创建新的 MainActivity 实例。要打开一个新的 MainActivity,请使用 Intent。在您的情况下,您应该引用原始 MainActivity 实例,并在那里调用此方法。不要以任何方式创建新的,因为您已经在运行它。一个简单的解决方法:
MainActivity.this.myMethod("Hello there")
您不必存储mContext. 你已经在 MainActivity 里面了。
因此,完整的代码将是:
public class MainActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView myWebView = findViewById(R.id.webview);
myWebView.loadUrl("http://www.google.com");
myWebView.addJavascriptInterface(new WebAppInterface(), "Android");
public void myMethod(String test)
Toast.makeText(this, test, Toast.LENGTH_SHORT).show();
public class WebAppInterface
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast)
MainActivity.this.myMethod("Hello there");
实际上,我认为您甚至可以避免使用MainActivity.this., 并myMethod直接调用。 参考技术A 你如果只是当工具类来用是可以new的然后调用里面的方法
以上是关于android 怎么将一个类中的arraylist<bitmap>序列化。的主要内容,如果未能解决你的问题,请参考以下文章
Android,如何在 Parcelable 类中正确使用 readTypedList 方法?
如何从另一个类中的 ArrayList <List> 获取数据?
android开发中appwidget 中的listView的数据怎么刷新