현재 배터리 잔량과 같은 특정 이벤트를 기반으로 휴대 전화 상태를 자동으로 변경하는 Android 앱을 개발 중입니다. 나는 3 가지 주요 매개 변수, 이름, 이벤트 및 상태 (이벤트 및 상태 2 다른 사용자 지정 클래스)ObjectOutputStream.writeObject()가 IOException을 던지는 이유는 무엇입니까?
있다 내 ProfileEdit 클래스에서 EditText 및 Spinner 사용자가 프로필을 구성하는 등의 다양한 구성 요소가 있습니다 . 각 프로필을 표시하는 ListActivity 클래스에있는 Profile 유형의 ArrayList에 액세스해야하며 현재 ArrayList를 가져 와서 새 프로필을 추가하거나 업데이트하는 ProfileEdit 클래스에 액세스해야합니다.
먼저 ObjectOutputStream을 사용하여 ArrayList를 전화기 sd 카드에 쓰고 그 다음 필요한 모든 클래스에서 가져올 수 있습니다. 그러나 지금까지이 작업을 수행하려는 시도는 결국 IOException을 던집니다. 내 코드는 다음과 같습니다 :
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("/sdcard/profile.prof"));
oos.writeObject(profiles);
oos.flush();
oos.close();
프로필 객체는 파일에 쓸 내 ArrayList입니다. 이것이 왜 예외를 던지고 있는지 나는 알 수 없다. writeObject ("Hello")를 호출하여 객체를 문자열로 변경하려고 시도했습니다. 그리고 더 이상 예외가 발생하지 않으므로 ArrayList에 문제가 있다고 가정 할 수 있습니다. 나는 ArrayList 클래스가 serializable을 구현하고, Profile 클래스도 serializable을 구현한다는 인상을 받았다.
다른 방법으로 내 ProfileList (ListActivity) 및 ProfileEdit 클래스에 동일한 ArrayList에 대한 액세스 권한을 부여 할 수 있다면 알려 주시기 바랍니다.
편집 : 여기 IO 예외가 추적 스택의 :합니다 (ProfileEdit 클래스의 라인 114 인의 writeObject() 선)
EZSettings(14788): IO Exception
EZSettings(14788): java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1535)
EZSettings(14788): java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
EZSettings(14788): java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
EZSettings(14788): java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
EZSettings(14788): java.util.ArrayList.writeObject(ArrayList.java:651)
EZSettings(14788): java.lang.reflect.Method.invokeNative(Native Method)
EZSettings(14788): java.lang.reflect.Method.invoke(Method.java:507)
EZSettings(14788): java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1219)
EZSettings(14788): java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1575)
EZSettings(14788): java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
EZSettings(14788): java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
EZSettings(14788): java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
EZSettings(14788): com.ezstatechanger.ProfileEdit.saveState(ProfileEdit.java:114)
EZSettings(14788): com.ezstatechanger.ProfileEdit.access$0(ProfileEdit.java:80)
EZSettings(14788): com.ezstatechanger.ProfileEdit$1.onClick(ProfileEdit.java:72)
EZSettings(14788): android.view.View.performClick(View.java:2538)
EZSettings(14788): android.view.View$PerformClick.run(View.java:9152)
EZSettings(14788): android.os.Handler.handleCallback(Handler.java:587)
EZSettings(14788): android.os.Handler.dispatchMessage(Handler.java:92)
EZSettings(14788): android.os.Looper.loop(Looper.java:123)
EZSettings(14788): android.app.ActivityThread.main(ActivityThread.java:3691)
EZSettings(14788): java.lang.reflect.Method.invokeNative(Native Method)
EZSettings(14788): java.lang.reflect.Method.invoke(Method.java:507)
EZSettings(14788): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
EZSettings(14788): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
EZSettings(14788): dalvik.system.NativeStart.main(Native Method)
'IOException'메시지는 무엇입니까? – jprofitt
안녕하세요, jdprofit, 원래 질문에 스택 추적을 추가했습니다. 제게는 당신보다 더 유용 할 것입니다. 감사. –