Android对象实现Parcelable接口产生的异常

来源:互联网 发布:知乎回答被删除 编辑:程序博客网 时间:2024/06/09 18:28

前言

这是在最近项目中产生的异常,经过反复测试,终于找到了出错的那行代码,网上的资源虽然多但是找不到我想要的,所以还是记录一下,有时间好好找一找原因

异常产生的环境说明

项目有一个环节是:弹出dialog,点击dialog跳到一个webviewActivity中,然后值是通过Bundle传递的,Bundle里有两个对象,一个实现了Parcelable,一个实现了Serializable(ps:不要问我为什么要两个实现不一样的接口,可能就是想让我看到这个变态的异常),然后初次请求是能正常跳转的,第二次点击的时候就崩了,崩了就算了,还疯狂创建该项目的进程,点击一次创建3个新进程.
以下是部分异常的信息

03-10 16:03:01.233 9629-9629/com.baidu.ads I/Timeline: Timeline: Activity_launch_request id:com.baidu.ads time:76004203-10 16:03:01.273 9629-9629/com.baidu.ads D/WebView: [WebView::mustAttachToEglContext] [android.view.ViewRootImpl@41d62158] isHw=[true] eglContext=[com.google.android.gles_jni.EGLContextImpl@6172f490]03-10 16:03:01.283 9629-9629/com.baidu.ads W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.03-10 16:03:01.283 9629-9629/com.baidu.ads W/ViewRootImpl: Dropping event due to root view being removed: MotionEvent { action=ACTION_DOWN, id[0]=0, x[0]=284.0, y[0]=263.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=760024, downTime=760024, deviceId=7, source=0x1002 }03-10 16:03:01.523 9629-9629/com.baidu.ads W/IInputConnectionWrapper: showStatusIcon on inactive InputConnection

另外产生的新进程里的异常信息

03-10 15:54:46.323 6961-6961/com.baidu.ads D/dalvikvm: Late-enabling CheckJNI03-10 15:54:46.413 6961-6961/com.baidu.ads D/ActivityThread: handleBindApplication:com.baidu.ads03-10 15:54:46.413 6961-6961/com.baidu.ads D/ActivityThread: setTargetHeapUtilization:0.7503-10 15:54:46.413 6961-6961/com.baidu.ads D/ActivityThread: setTargetHeapMinFree:209715203-10 15:54:46.413 6961-6961/com.baidu.ads D/ActivityThread: setTargetHeapConcurrentStart:209715203-10 15:54:46.433 6961-6961/com.baidu.ads I/InstantRun: Instant Run Runtime started. Android package is com.baidu.ads, real application class is null.03-10 15:54:46.433 6961-6961/com.baidu.ads W/InstantRun: No instant run dex files added to classpath03-10 15:54:46.443 6961-6961/com.baidu.ads E/InstantRun: IO Error creating local socket at com.baidu.ads java.io.IOException: Address already in use at android.net.LocalSocketImpl.bindLocal(Native Method)                                                      at android.net.LocalSocketImpl.bind(LocalSocketImpl.java:311)                                                             at android.net.LocalServerSocket.<init>(LocalServerSocket.java:52)                                                             at com.android.tools.fd.runtime.Server.<init>(Server.java:94)                                                             at com.android.tools.fd.runtime.Server.create(Server.java:88)                                                             at com.android.tools.fd.runtime.BootstrapApplication.onCreate (BootstrapApplication.java:359)at android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1009)at android.app.ActivityThread.handleBindApplication (ActivityThread.java:4632)                                                                            at android.app.ActivityThread.access$1800(ActivityThread.java:141)                                                             at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1298)                                          at android.os.Handler.dispatchMessage(Handler.java:102)                                                          at android.os.Looper.loop(Looper.java:136)                                                             at android.app.ActivityThread.main(ActivityThread.java:5336)                                                      at java.lang.reflect.Method.invokeNative(Native Method)                                                     at java.lang.reflect.Method.invoke(Method.java:515)                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:873)                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:689)                                       at dalvik.system.NativeStart.main(Native Method)03-10 15:56:52.523 6961-6967/com.baidu.ads D/dalvikvm: Debugger has detached; object registry had 1 entries

异常说明及解决

好吧,我只能看到进程里说是socket异常,地址被重复使用了,还是不能理解,只能慢慢改代码,然后就定位到把intent发消息的那一行,最后把对象实现Parcelable改为实现
Serializable就正常了
当然,这个异常不是每个手机上都会出现的,
三星6.0.1 N9100 出现崩溃但没有创建多个进程,
华为4.4.4、oppo4.4.4、三星4.0.1I699I 崩溃并且创建多个进程
但是htc4.4.4 M8w正常
我还能说什么呢?????

最后

以上是我的记录,如果哪位大神知道原因,还请告知一下,万分感谢,我自己有时间也抓紧看一看
0 0