Articles of 序列化

在另一个Intent中发送Intent

也许我会以错误的方式解决这个问题,但我想在我自己的应用程序中响应我的Android AppWidget的点击事件并启动一个Activity。 在我设置PendingIntent我有另一个想要在点击时启动的Intent 。 我的onStartCommand使用这一行: final Intent mLaunchIntent = (Intent) intent.getParcelableExtra(Widget.EXTRA_INTENT); 当我调用setOnClickPendingIntent我之前有这行: mSendingIntent.putExtra(Widget.EXTRA_INTENT, (Parcelable) mLaunchIntent); 因此,尽管mLaunchIntent在两行中都是有效的Intent ,但第一行缺少大量数据。 然后调用startActivity失败,因为Intent无效。 我想知道是否有可能,以及如何在没有严格调用putExtras情况下在另一个Intent内发送Intent ,因为该方法简单地将一个Intent的额外内容添加到下一个Intent 。 我想将这两个分开并且易于访问。

如何为android.location类序列化?

我正在尝试序列化我的位置类(使用android.location类) 但是,它给了我一个错误! 11-21 21:25:37.337: W/System.err(3152): java.io.NotSerializableException: android.location 所以,我试图扩展android.location.Location类。 private class NewLocation extends Location implements Serializable { private String Provider; private double Latitude, Longitude, Altitude; private float bear; public NewLocation(Location l) { super(l); Provider = l.getProvider(); Latitude = l.getLatitude(); Longitude = l.getLongitude(); Altitude = l.getAltitude(); bear = l.getBearing(); } } 之后,我试图序列化扩展类,但同样的错误。 这是序列化代码 public static byte[] serialize(Object […]

将Serializable数组从一个活动传递到另一个活动时的类Cast Exception

我有一个包含可序列化对象的数组,我正在尝试使用Intent的putExtra()和Bundle的getSerializable()。 但是,我得到了一个类强制转换exception并且不明白为什么。 以下是代码。 UserInfo是我自己的类,它实现了Serializable,我能够在活动之间传递单个UserInfo对象。 我在尝试使用数组时遇到了这个问题。 发送序列化的代码: Intent intent = new Intent( JOIN_GROUP ); //JOIN_GROUP is a constant string String user_ids[] = packet.userIDs(); int length = user_ids.length; UserInfo users[] = new UserInfo[length]; for ( int i = 0; i < length; ++i ) users[i] = getUserByID( user_ids[i] ); intent.putExtra( USERS_IN_GROUP, users ); 检索序列化的代码: Bundle extra = […]

Gson序列化HashMap <Teacher,List >

我有一张地图,其中一个键的值是一个对象列表。 能够通过builder.enableComplexMapKeySerialization();序列化密钥builder.enableComplexMapKeySerialization(); 但是这些值没有按预期序列化,因为它们在反序列化而不是对象上返回一个字符串。 下面是序列化的输出 [{“id”:31001,“name”:老师“]},//这是关键 [{“id”:33033,“name”:“student1”},{“id”:34001,“name”:“student2”}]],//这是值列表 我使用了相关的TypeToken,它是TypeToken<HashMap<Teacher, List>>但仍然在列表值上返回反序列化而不是对象的字符串。

java.io.NotSerializableException即使我实现“Serializable”

我有一点问题:我想测试android上的序列化(使用eclipse)并find一个如何做的例子。 我知道我需要在我想要序列化的类中实现“Serializable”,我已经这样做并且总是得到一个java.io.NotSerializableExceptionexception。 这是代码: public void Button(View view) throws IOException, ClassNotFoundException { ser test = new ser(); test.x = 204; test.y = 2843; test.speed = 12; test.direction = 1343; test.a = 493; test.b = 2323; test.c = 29489; test.d = 394; byte[] arr = serialize(test); ser res = (ser) deserialize(arr); } public static byte[] serialize(Object o) […]

如何将runnable放入bundle?

我想通过bundle将Runnable传递给一个活动,这样当onCreate触发时runnable必须运行。 我编写了一个实现Serializable的类,但它导致exception: “java.lang.RuntimeException: Parcelable encountered IOException writing serializable object” 。 我的代码在这里: package some.company.common; import java.io.Serializable; public class SerializedRunnable implements Serializable, Runnable { private static final long serialVersionUID = 6641813629033240205L; public SerializedRunnable() { } private Runnable runnable; public SerializedRunnable(Runnable runnable) { this.runnable = runnable; } @Override public void run() { this.runnable.run(); } }

我可以使用模糊处理的序列化吗?

我想知道它是否会起作用…在我的应用程序中,我有一个对象,我正在序列化文件,然后我用ProGuard混淆代码,应用程序进入市场。 然后我想发布新版本的应用程序。 我也一样。 用户运行应用程序更新。 问题是 – 使用第一个版本的应用程序序列化的对象是否在第二个版本中正确反序列化? 如果是的话 – 为什么?

为图像编辑器快速,稳健地保存/加载文档状态

我正在寻找一些关于我存储Android和iPhone手机位图编辑器状态的方法的批评。 即使是“对我来说也不错!” 反应会很棒! 在应用程序中,当前用户文档包含几个可以绘制的位图图层(每个可能是1024 x 768像素)。 该应用程序的基本要求是: 我需要能够保存和恢复文档状态。 当用户退出应用程序或拨打电话时,我需要能够快速保存文档状态(大约2秒钟内)。 如果应用程序崩溃,我需要能够恢复文档状态(如果用户失去可能30秒的工作,则可以)。 对于1,我找不到任何支持图层的打开文件格式。 我将使用以下文件结构来存储我的文档: document_folder/ layer1.png layer2.png … metadata.xml 这些图层仅存储为.png文件,.xml文件包含数据,例如当前可见的图层。 文档文件夹可以由应用程序按原样打开,也可以将文件夹存储在.zip文件中。 对于其他应用程序来说,这似乎是一个很好的简单格式。 除了.png文件,我还允许以自定义.raw文件格式保存图层,其中包含来自位图的未处理原始像素数据。 我可以在手机上快速保存这些(<0.5s),而.png文件需要一两秒钟。 我的快速保存文档的计划是在启动时创建一个名为/ autosave的文件夹,并在那里保存所有图层的.raw版本。 在一个图层上执行几个编辑命令之后,我会在后台线程中更新该图层的.raw文件。 为了保存时的稳健性,我会将图层保存为例如layer1_tmp.raw,当我确认文件已完全写入时,将layer1.raw替换为此文件。 如果应用程序在使用过程中崩溃,我只需重新打开/ autosave文件夹。 当应用程序关闭或用户接到电话时,我只需更新上次修改的图层即可自动保存。 当用户想要保存时,我只是将所有.raw文件转换为.png文件,然后压缩文件夹。 你怎么看? 有明显的缺陷吗? 有更简单的方法吗? 我不知怎的重新发明轮子? 谢谢。

保存ArrayList内容的最佳方法是什么?

我想保存一个ArrayList,以便它是持久的。 内容可以改变。 在android中接近这个的最佳方法是什么?

Android和协议缓冲区

我正在编写一个Android应用程序,它既可以存储数据,也可以使用协议缓冲区与服务器通信。 但是,使用LITE标志(在JAR库和生成的.java文件中)编译的协议缓冲区的库存实现具有~30 KB的开销,其中程序本身仅为~30 KB。 换句话说,协议缓冲区使程序大小加倍。 在线搜索,我发现了一个Android特定实现的参考 。 不幸的是,它似乎没有文档,并且从标准.proto文件生成的代码与它不兼容。 有人用过吗? 如何从.proto文件生成此实现的代码? 还有其他轻量级替代品吗?