0

我在一个名为的类中有一个看起来像这样的字段Game

private ArrayList<Question>[] questions;

我是这样写的

public void writeToParcel(Parcel parcel, int flags){
    ...
    parcel.writeArray(questions);
    ...
}

并像这样检索它

private Game(Parcel in) {
    ...
    questions = (ArrayList<Question>[]) in.readArray(Question.class.getClassLoader());
    ...
}

出于某种原因,当我知道onDestroyed()调用了 Activity 时(当方向从纵向更改为横向或反之)时,它可以正常工作,并且所有数据都已传递。

但是,当应用程序暂停一段时间(即用户回家并继续做随机的事情)时,它会因“无法将 Object[] 转换为 ArrayList[]”而死掉。

日志猫:

05-18 02:52:40.967 I/ActivityManager(401): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.app/.ui.MainActivity} from pid 649
05-18 02:52:51.053 W/ActivityManager(401): Activity idle timeout for ActivityRecord{412389c8 u0 com.example.app/.ui.MainActivity}
05-18 03:00:29.857 I/WindowState(401): WIN DEATH: Window{41238b08 u0 com.example.app/com.example.app.ui.MainActivity}
05-18 03:00:29.865 I/ActivityManager(401): Process com.example.app (pid 29139) has died.
05-18 09:00:53.402 I/ActivityManager(401): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.app/.ui.MainActivity bnds=[373,630][533,830]} from pid 649
05-18 09:00:53.465 I/ActivityManager(401): Start proc com.example.app for activity com.example.app/.ui.MainActivity: pid=9148 uid=10117 gids={50117, 3003, 1028}
05-18 09:00:53.949 E/AndroidRuntime(9148): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/com.example.app.ui.MainActivity}: java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.util.ArrayList[]
05-18 09:00:53.949 E/AndroidRuntime(9148):  at com.example.app.model.Game.<init>(Game.java:241)
05-18 09:00:53.949 E/AndroidRuntime(9148):  at com.example.app.model.Game.<init>(Game.java:235)
05-18 09:00:53.949 E/AndroidRuntime(9148):  at com.example.app.model.Game$1.createFromParcel(Game.java:228)
05-18 09:00:53.949 E/AndroidRuntime(9148):  at com.example.app.model.Game$1.createFromParcel(Game.java:1)
05-18 09:00:53.949 E/AndroidRuntime(9148):  at com.example.app.ui.MainActivity.onCreate(MainActivity.java:212)
05-18 09:00:53.949 W/ActivityManager(401):   Force finishing activity com.example.app/.ui.MainActivity
05-18 09:00:54.512 W/ActivityManager(401): Activity pause timeout for ActivityRecord{412389c8 u0 com.example.app/.ui.MainActivity}
05-18 09:00:59.981 I/ActivityManager(401): Process com.example.app (pid 9148) has died.

谁能解释发生了什么?看起来它释放了我的 Activity 占用的内存,因此对象不再存在。这个对吗?

4

0 回答 0