2010-01-25 26 views
2

我有一個Android應用程序,我支持並在多次調用其中一個活動之後,在嘗試從intent中獲取額外內容時拋出stackoverflowerror。這是從崩潰時的堆棧跟蹤。任何想法爲什麼在下次調用活動至少4次之後拋出StackOverflowError時,從意圖中獲取額外內容?調用Intent.getStringExtra()定期拋出StackOverflowError

用於建立意圖的代碼,幷包含字符串,字符串,布爾值,對象:

Intent videoIntent = new Intent(this, VideoPlayer.class); 
videoIntent.putExtra(AppNames.EXTRA_VIDEO_URI, uri); 
videoIntent.putExtra(AppNames.EXTRA_VIDEO_TITLE, channel.getName()); 
videoIntent.putExtra(AppNames.EXTRA_VIDEO_MODE_RESUME, false); 
videoIntent.putExtra(AppNames.EXTRA_MCD_CHANNEL, channel); 
startActivity(videoIntent); 

和被投擲的StackOverflowError代碼:
uri = getIntent().getStringExtra(AppNames.EXTRA_VIDEO_URI);

I/dalvikvm(1719): Stack overflow, expanding (0x41048200 to 0x41048000) 
I/dalvikvm(1719): Shrank stack (to 0x41048200, curFrame is 0x4104834c) 
D/AndroidRuntime(1719): Shutting down VM 
W/dalvikvm(1719): threadid=3: thread exiting with uncaught exception (group=0x4000fe70) 
E/AndroidRuntime(1719): Uncaught handler: thread main exiting due to uncaught exception 
E/AndroidRuntime(1719): java.lang.StackOverflowError 
E/AndroidRuntime(1719): at java.lang.reflect.ReflectionAccessImpl.clone(ReflectionAccessImpl.java:38) 
E/AndroidRuntime(1719): at java.lang.Class.getDeclaredMethod(Class.java:765) 
E/AndroidRuntime(1719): at java.io.ObjectStreamClass.getPrivateReadObjectMethod(ObjectStreamClass.java:789) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1525) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1455) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2124) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:956) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2289) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2243) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1296) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:545) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1549) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1455) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2124) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:956) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2289) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2243) 
E/AndroidRuntime(1719): at java.util.ArrayList.readObject(ArrayList.java:702) 
E/AndroidRuntime(1719): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(1719): at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1534) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1455) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2124) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:956) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2289) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2243) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1296) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:545) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1549) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1455) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2124) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:956) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2289) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2243) 
E/AndroidRuntime(1719): at java.util.ArrayList.readObject(ArrayList.java:702) 
E/AndroidRuntime(1719): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(1719): at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1534) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1455) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2124) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:956) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2289) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2243) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1296) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:545) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1549) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1455) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2124) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:956) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2289) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2243) 
E/AndroidRuntime(1719): at java.util.ArrayList.readObject(ArrayList.java:702) 
E/AndroidRuntime(1719): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(1719): at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1534) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1455) 
E/AndroidRuntime(1719): at java.io.ObjectInputStream.readNew 
D/dalvikvm(1719): GC freed 6315 objects/501704 bytes in 154ms 
I/Process ( 56): Sending signal. PID: 1719 SIG: 3 
I/dalvikvm(1719): threadid=7: reacting to signal 3 
+0

你在演員中包裝了什麼? – CommonsWare 2010-01-25 10:45:23

+0

更新了信息以顯示創建Intent和用於將信息拉出的代碼。但簡而言之,String,String,boolean,Object – stewbv 2010-01-25 14:37:56

回答

1

你對象看起來太複雜。當你序列化一個對象時,它的內容必須被序列化。如果它包含其他對象,則這些對象也必須反序列化,等等。

1

據我所知getIntent().getStringExtra()返回的字符串不是URI。

相關問題