gpt4 book ai didi

java - intent 不能放入 XMPPTCPConnection 类型的额外对象

转载 作者:行者123 更新时间:2023-11-29 03:00:13 26 4
gpt4 key购买 nike

我读了这篇有趣的帖子 How to pass an object from one activity to another on Android并发现我应该使用 putExtra 将对象发送到其他 Activity 并使用 getIntent() 接收对象。getSerializableExtra("name") 是必要的。但是当我使用 putExtra 时,它迫使我将 XMPPTCPConection 对象转换为 (java.io.Serializable)。

java安卓代码:

  XMPPTCPConnection connection;
connection= xmppConnectio.getXMPPConnectio();
if(connection.equals(null))
Log.d("","is null");
else
Log.d("","is not null");

Intent intent= new Intent(this,chat.class);
intent.putExtra("connection", (java.io.Serializable) connection);
startActivity(intent);

但它抛出异常

02-21 05:00:44.733    4672-4683/passargad.ehsan D/connected﹕ yes connected successfully :
02-21 05:00:44.733 4672-4672/passargad.ehsan D/﹕ is not null
02-21 05:00:44.733 4672-4672/passargad.ehsan D/AndroidRuntime﹕ Shutting down VM
02-21 05:00:44.733 4672-4672/passargad.ehsan W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x400205a0)
02-21 05:00:44.743 4672-4672/passargad.ehsan E/AndroidRuntime﹕ FATAL EXCEPTION: main
**java.lang.ClassCastException: org.jivesoftware.smack.tcp.XMPPTCPConnection**
at passargad.ehsan.MainActivity.triger(MainActivity.java:189)
at passargad.ehsan.XMPPConnectio$connectionXMPP.onProgressUpdate(XMPPConnectio.java:125)
at passargad.ehsan.XMPPConnectio$connectionXMPP.onProgressUpdate(XMPPConnectio.java:55)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:432) at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4277)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)

故事中有趣的部分是可以正确执行 3 次。但后来它坏了。

提前致谢!

最佳答案

您必须转换为 Serializable 的事实应该已经告诉您问题所在。我查找了 XMPPTCPConnection 的 JavaDoc,实际上,它没有实现 Serializable

当您尝试转换为 Serializable 时,您的应用程序快死了,因为该类未实现它。您引用的帖子提到“让自定义类实现 Serializable”,因为它是自定义类,开发人员可以进行更改。对于库类,您没有该选项。


您需要想出一个管理连接的策略,可能需要某种静态引用(查看使用 WeakReference 来避免泄漏连接)。您还必须处理重新创建 Activity 时的情况(即设备旋转),并且如果/当您丢失对它的引用时能够重新建立连接。

我很好奇管理这样的连接的最佳解决方案是什么。我没有直接经验,但也许您可以仔细阅读 GitHub 上的一些 Smack 实现,看看其他开发人员是如何处理这个问题的。

关于java - intent 不能放入 XMPPTCPConnection 类型的额外对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35531469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com