1

引数付きのActivityの呼び出しについてお聞きしたいです。私はそれについて多くの例を見てきました。しかし、カスタム引数を使用してアクティビティを作成 (呼び出し) することがどういうわけか「簡単ではない」または「単純ではない」理由を説明したいと思います。

このような投稿や他の投稿をたくさん見ました。文字列を渡すがカスタム オブジェクトを渡さない人。はい、シリアライズ可能でパーセブルなメソッドを実装してカスタムオブジェクトを渡していますが、効率的ではないようです(見たことがないので間違っているかもしれません)。最終的に宣言されたクラスについては、さらに多くの作業が必要です。

putExtras(String name, String value)で Stringを渡すとき、 putExtras(String name, Object object)のような関数が定義されていないのはなぜですか? それによってカスタムオブジェクトを渡す方が簡単ではないでしょうか?

プロセスの複雑さについては、こちらの投稿で説明がありました

アプリはさまざまなプロセスにあり、別のメモリ アドレス空間を持っているため、プロセス内のメモリ ブロックにポインタ (参照) を送信して、別のプロセスで使用できると期待することはできません。

しかし、それでも、私を満足させ、私が見ていないものを理解するのに役立つ理由を見つけることができませんでした. さて、アプリが異なるプロセスにあり、それらのメモリ空間が異なるとしましょう。では、渡すデータを別のアクティビティのメモリ空間にコピーしているのでしょうか? または、少なくとも、同じアプリケーションに属するアクティビティ (アプリ内のアクティビティには、そのアプリに対応する共通の何かがあると思います) は、データを簡単に共有または渡すことができるように、共通のメモリ空間を持つべきではありませんか?

私はこれについて自分自身を明確にしようとしています。Android を Windows 開発と比較すべきではないことは承知していますが、もっとシンプルになればもっと良くなると思います。私はこれについて何かが欠けていることを知っています。しかし、物事を簡単に通過させるのを妨げるものは何ですか?

ありがとう。

4

2 に答える 2

0

putExtras(String name, Object object) のような関数が定義されていないのはなぜですか? それによってカスタムオブジェクトを渡す方が簡単ではないでしょうか?

は常にプロセス境界を越えるためstartActivity()、渡されるものはすべて、転送のためにバイト配列に変換できる必要があります。

では、渡すデータを別のアクティビティのメモリ空間にコピーしているのでしょうか?

プロセス間でデータをコピーしています。

または、少なくとも、同じアプリケーションに属するアクティビティ (アプリ内のアクティビティには、そのアプリに対応する共通の何かがあると思います) は、データを簡単に共有または渡すことができるように、共通のメモリ空間を持つべきではありませんか?

ただし、 の主な作業はstartActivity()アプリケーション プロセスではなく、コア オペレーティング システム プロセスによって行われます。

Android を Windows 開発と比較すべきではないことは承知していますが、もっとシンプルになればもっと良くなると思います。

Web 開発では、クライアントとサーバーの間でオブジェクトを渡すのではなく、文字列またはバイト配列との間でデータをマーシャリングします。

于 2013-04-29T20:10:26.723 に答える