Как поместить runnable в бандл?

Я хочу передать Runnable в действие через пакет, поэтому runnable должен запускаться при срабатывании onCreate. Я написал класс, который реализует Serializable, но вызывает исключение: "java.lang.RuntimeException: Parcelable encountered IOException writing serializable object". Мой код идет здесь:

package some.company.common;

import java.io.Serializable;

public class SerializedRunnable implements Serializable, Runnable {

    private static final long serialVersionUID = 6641813629033240205L;

    public SerializedRunnable() {
    }

    private Runnable runnable;

    public SerializedRunnable(Runnable runnable) {
        this.runnable = runnable;
    }

    @Override
    public void run() {
        this.runnable.run();
    }

}

person Hossein POURAKBAR    schedule 16.12.2012    source источник
comment
сериализуется только содержимое объекта. Почему вы хотите сериализовать исполняемый файл, который выглядит пустой тратой времени. вы всегда можете передать только данные другому исполняемому файлу, который возьмет эти данные и обработает   -  person nandeesh    schedule 16.12.2012


Ответы (1)


Похоже, Runnable не сериализуем. Чтобы реализовать собственную сериализацию, вы должны реализовать readObject и writeObject самостоятельно.

Проверьте здесь

person fedepaol    schedule 16.12.2012
comment
Я добавил два метода точно так же: private void readObject(ObjectInputStream aInputStream) throws ClassNotFoundException, IOException { aInputStream.defaultReadObject(); } private void writeObject(ObjectOutputStream aOutputStream) throws IOException { aOutputStream.defaultWriteObject(); }, но та же ошибка продолжается. - person Hossein POURAKBAR; 16.12.2012