インターフェイスは、私が説明しましょう:Serializeを私はインターフェイスを持っているそのコンストラクタでオブジェクトをシリアル化しようとしている
これでオブジェクトクラス:
public class MyObj implements Serializable{
private static final long serialVersionUID = -29238982928391L;
private MyCallback onMyCallback;
private String shortcutsText;
public MyObj(String shortcutsText, MyCallback onMyCallback){
this.shortcutsText = shortcutsText;
this.onMyCallback = onMyCallback;
}
public MyCallback getOnMyCallback() {
return onMyCallback;
}
}
これはMyCallbackですインターフェイス:
public interface MyCallback extends Serializable {
long serialVersionUID = -1306760703066967345L;
void onMyCallbackClickListener();
}
しかし、私はそれを書くときに(out
はです):
MyCallback myCallback = new MyCallback() {
@Override
public void onMyCallbackClickListener() {
Toast.makeText(getApplicationContext(), "TEST!", Toast.LENGTH_LONG).show();
}
};
out.writeObject(myCallback);
かと:
out.writeObject(new MyObj("Test", myCallback));
それはスロー:
をjava.io.NotSerializableException
に従って私は非同期的に2つのプロセス間のインターフェイスを渡すのですか?AIDLは私を助けないので –
あなたはそれを実際のクラスに昇格させることができます。その後、シリアル化されます。しかし、Javaオブジェクトを直列化して渡すことは、とにかく本当に良いアイデアではありません。いくつかのデータバインディングツールを手に入れ、JSONなどを送信します。 –