1

通常、Java では、オブジェクトは参照の値によって渡されます。したがってOBJ、 addressaddrにオブジェクトがある場合、そのオブジェクトは address の値によって渡されますaddr。しかし最近、Stack Overflow ( How can I pass a Bitmap object from one activity to another ) で、インテントを介してビットマップを渡すとコストがかかることを読みました。ここに部分的な引用があります:

ビットマップがファイルまたはリソースとして存在する場合は、ビットマップ自体ではなく、ビットマップの URI または ResourceID を渡すことを常にお勧めします。ビットマップ全体を渡すには、大量のメモリが必要です。

では、ビットマップ オブジェクトがその参照の値によって渡されないのはなぜでしょうか?

4

1 に答える 1

0

インテントのターゲットが同じアプリケーションにない可能性があるためです。メモリを共有しないため、あるアプリケーションから別のアプリケーションに参照を渡すことはできません。シリアライゼーションでこれを回避できますが、両方の端で多くの時間とメモリが必要です。インテントのインターフェースはそれを考慮して書かれているため、特定の単純な型またはシリアライズ可能を実装するオブジェクトを除いて、オブジェクトをバンドルに追加することはできません (Bitmap はそうかもしれませんが、インテントを介して渡すと大容量のメモリにヒットします)。 /時間使用)。

于 2013-03-13T18:57:06.283 に答える