読者です 読者をやめる 読者になる 読者になる

日々精進

新しく学んだことを書き留めていきます

Bundle経由でFragmentにオブジェクトを渡すと参照渡しになる

Android

FragmentAからFragmentBインスタンスを生成するときにBundleにオブジェクトを詰めて渡した場合、一旦SerializeされてFragmentB側でインスタンスが生成されるものだと思っていたが違うらしい。実際は参照が渡されるだけ。

ただし、OSにprocessをkillされた後再起動した時にはBundleが保持しているオブジェクトは各Fragmentで生成されるのでFragmentAとFragmentBで違うオブジェクトを参照することになる。 これ罠っぽいな。。Mutableなオブジェクトはdeep copyして渡した方が良さそう。そうすればprocess killされた場合とされない場合で挙動が変わらない。