- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有接口(interface)Callback
类如下所示,
public interface Callback extends Serializable {
void onResponse(int responseCode);
}
我使用上面的接口(interface)解析为参数回调对象,如下所示
private Callback callback = new Callback() {
@Override
public void onResponse(int responseCode) {
switch (responseCode) {
case ResponseCode.FACE_NOT_DETECT: {
notifyText.setText("Face not detected");
break;
}
case ResponseCode.FACE_TOO_FAR: {
notifyText.setText("Face too far, Please get closer to the camera");
break;
}
case ResponseCode.FACE_BLINK_TO_CAPTURE: {
notifyText.setText("Blink once to capture your face image");
break;
}
}
}
};
然后我用上面的callback
反对发送到我的图书馆
FaceDetectFragment.newInstance(callback, mode);
在此FaceDetectFragment
类,我如下操作参数,
public static FaceDetectFragment newInstance(Callback callback, int mode) {
if (faceInstance != null) {
return faceInstance;
}
faceInstance = new FaceDetectFragment();
Bundle bundle = new Bundle();
bundle.putSerializable(KEY_USER_CALLBACK, callback);
bundle.putInt(KEY_BIOMETRIC_MODE, mode);
faceInstance.setArguments(bundle);
return faceInstance;
}
然后我在 onCreate
中使用上面设置的参数方法如下图,
if (getArguments() != null) {
clientCallback = (Callback) getArguments().getSerializable(KEY_USER_CALLBACK);
biometricMode = getArguments().getInt(KEY_BIOMETRIC_MODE);
}
然后在这里我将多次使用回调对象,如下所示,
clientCallback.onResponse(ResponseCode.FACE_NOT_DETECT);
所有功能都正常,但是当我暂停应用程序时,会抛出 RuntimeException,异常如下所示,
Process: com.ej.face_demo_android, PID: 29679
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.ej.face_demo_android.FaceDetectActivity$2)
at android.os.Parcel.writeSerializable(Parcel.java:1536)
at android.os.Parcel.writeValue(Parcel.java:1484)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:733)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1408)
at android.os.Bundle.writeToParcel(Bundle.java:1133)
at android.os.Parcel.writeBundle(Parcel.java:773)
at android.support.v4.app.FragmentState.writeToParcel(FragmentState.java:124)
at android.os.Parcel.writeTypedArray(Parcel.java:1316)
at android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:639)
at android.os.Parcel.writeParcelable(Parcel.java:1505)
at android.os.Parcel.writeValue(Parcel.java:1411)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:733)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1408)
at android.os.Bundle.writeToParcel(Bundle.java:1133)
at android.os.Parcel.writeBundle(Parcel.java:773)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:4146)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:4148)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Caused by: java.io.NotSerializableException: com.ej.face_demo_android.FaceDetectActivity
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1224)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1584)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1549)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1472)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1218)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
at android.os.Parcel.writeSerializable(Parcel.java:1531)
at android.os.Parcel.writeValue(Parcel.java:1484)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:733)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1408)
at android.os.Bundle.writeToParcel(Bundle.java:1133)
at android.os.Parcel.writeBundle(Parcel.java:773)
at android.support.v4.app.FragmentState.writeToParcel(FragmentState.java:124)
at android.os.Parcel.writeTypedArray(Parcel.java:1316)
at android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:639)
at android.os.Parcel.writeParcelable(Parcel.java:1505)
at android.os.Parcel.writeValue(Parcel.java:1411)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:733)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1408)
at android.os.Bundle.writeToParcel(Bundle.java:1133)
at android.os.Parcel.writeBundle(Parcel.java:773)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:4146)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:4148)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
据我所知,当我暂停应用程序时,尝试保存应用程序当前状态的应用程序无法识别序列化回调以保存在当前状态。我应该怎么做才能处理这个异常?
更新:当我们考虑 fragment 生命周期时,onPause
state 被触发,当前状态 wi 保存在堆栈中,然后我的序列化对象将通过 main thread
再次包装到 bundle 中.这是我分析时出现的时间错误
提前感谢您的宝贵时间!
最佳答案
要回答你的问题,“真正的问题”是你试图序列化一个类的实例,而不是一个接口(interface)。您的类是一个名为 com.ej.face_demo_android.FaceDetectActivity$2
的匿名内部类,您在此处创建:
private Callback callback = new Callback() {
@Override
public void onResponse(int responseCode) {
switch (responseCode) {
case ResponseCode.FACE_NOT_DETECT: {
notifyText.setText("Face not detected");
break;
}
case ResponseCode.FACE_TOO_FAR: {
notifyText.setText("Face too far, Please get closer to the camera");
break;
}
case ResponseCode.FACE_BLINK_TO_CAPTURE: {
notifyText.setText("Blink once to capture your face image");
break;
}
}
}
};
不可能序列化这个匿名内部类。参见 NotSerializableException on anonymous class了解更多细节。
如果您确实需要这样做,请创建一个真正的独立类而不是匿名内部类。你可能会更幸运。
关于android - 将序列化的接口(interface)对象从 Activity 解析为 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54978960/
我正在尝试在我的代码库中为我正在编写的游戏服务器更多地使用接口(interface),并了解高级概念以及何时应该使用接口(interface)(我认为)。在我的例子中,我使用它们将我的包相互分离,并使
我有一个名为 Widget 的接口(interface),它在我的整个项目中都在使用。但是,它也用作名为 Widget 的组件的 Prop 。 处理此问题的最佳方法是什么?我应该更改我的 Widget
有一个接口(interface)可以是多个接口(interface)之一 interface a {x:string} interface b {y:string} interface c {z:st
我遇到了一种情况,我需要调用第三方服务来获取一些信息。这些服务对于不同的客户可能会有所不同。我的界面中有一个身份验证功能,如下所示。 interface IServiceProvider { bool
在我的例子中,“RequestHandlerProxy”是一个结构,其字段为接口(interface)“IAdapter”,接口(interface)有可能被调用的方法,该方法的输入为结构“Reque
我有一个接口(interface)Interface1,它已由类A实现,并且设置了一些私有(private)变量值,并且我将类A的对象发送到下一个接受输入作为Interface2的类。那么我怎样才能将
假设我有这样的类和接口(interface)结构: interface IService {} interface IEmailService : IService { Task SendAs
有人知道我在哪里可以找到 XML-RPC 接口(interface)的定义(在 OpenERP 7 中)?我想知道创建或获取对象需要哪些参数和对象属性。每个元素的 XML 示例也将非常有帮助。 最佳答
最近,我一直在阅读有关接口(interface)是抽象的错误概念的文章。一篇这样的帖子是http://blog.ploeh.dk/2010/12/02/InterfacesAreNotAbstract
如果我有一个由第三方实现的现有 IInterface 后代,并且我想添加辅助例程,Delphi 是否提供了任何简单的方法来实现此目的,而无需手动重定向每个接口(interface)方法?也就是说,给定
我正在尝试将 Article 数组分配给我的 Mongoose 文档,但 Typescript 似乎不喜欢这样,我不知道为什么它显示此警告/错误,表明它不可分配. 我的 Mongoose 模式和接口(
我有两个接口(interface): public interface IController { void doSomething(IEntity thing); } public inte
是否可以创建一个扩展 Serializable 接口(interface)的接口(interface)? 如果是,那么扩展接口(interface)的行为是否会像 Serilizable 接口(int
我试图在两个存储之间创建一个中间层,它从存储 A 中获取数据,将其转换为相应类型的存储 B,然后存储它。由于我需要转换大约 50-100 种类型,我希望使用 map[string]func 并根据 s
我正在处理一个要求,其中我收到一个 JSON 对象,其中包含一个日期值作为字符串。我的任务是将 Date 对象存储在数据库中。 这种东西: {"start_date": "2019-05-29", "
我们的方法的目标是为我们现有的 DAO 和模型类引入接口(interface)。模型类由各种类型的资源 ID 标识,资源 ID 不仅仅是随机数,还带有语义和行为。因此,我们必须用对象而不是原始类型来表
Collection 接口(interface)有多个方法。 List 接口(interface)扩展了 Collection 接口(interface)。它声明与 Collection 接口(int
我有一个 Java 服务器应用程序,它使用 Jackson 使用反射 API 对 DTO 进行一般序列化。例如对于这个 DTO 接口(interface): package com.acme.libr
如果我在 Kotlin 中有一个接口(interface): interface KotlinInterface { val id: String } 我可以这样实现: class MyCla
我知道Java中所有访问修饰符之间的区别。然而,有人问了我一个非常有趣的问题,我很难找到答案:Java 中的 private 接口(interface)和 public 接口(interface)有什
我是一名优秀的程序员,十分优秀!