私は Android にはほとんど慣れていませんが、この 2、3 週間で Android のほとんどの内部構造と仕組みを理解することができました。ただし、まだ気になることが 1 つあります。アクティビティと単純なフォームの基本的な違いは何ですか? Android には「フォーム」のようなものがないことは知っていますが、これは、プロセス全体のクラスではなく、基礎となるクラスを持ち、すべての機能がその中で実行される要素のフルスクリーン レイアウトを意味します (正確にはアクティビティ)。
私が理解している限り、アクティビティは、基本的にアプリケーション全体から独立したいくつかのアクションを実行するために OS によってインスタンス化される個別のプロセスです。これは、アプリケーションのアクティビティを 1 つしか実行できず、アプリケーション全体をロードする必要なく、すべての機能を実行できることも意味します。たとえば、あるコーデックから別のコーデックにムービーを変換できるムービー プレーヤーがある場合、その機能を別のアクティビティとして実装して、ファイル マネージャーなどの他のアプリケーションでも、それのみを使用してコーデック間でムービーを変換できるようにすることができます。アプリケーション全体ではなく、アクティビティ。
そして、それは完全に簡単に思えます。問題は、アプリケーションから分離できない機能のために、なぜ誰もが別々のアクティビティを使用しているのかということです。言い換えれば、同じプロセス内の単純なフォームがより適切であると私が思う場合、人々は一般的にアクティビティを使用します。たとえば、アプリケーションの設定などのために別のアクティビティを使用している人を見てきましたが、これは明らかにアプリ自体の外部では起動されません。また、アプリケーション固有のデータの編集も、アプリの外部では行われません。編集するデータは、アプリケーションだけが知っているリストから選択する必要があるためです。
私の経験からの別の例 - 単位変換アプリケーション。単位のカテゴリの GridView を含むメイン メニューがあり、各カテゴリには単位のリストがあり、任意の単位をクリックすると、変換する値を入力するための「電卓」フォームが表示されます。誰もが示唆するようにこれを行っていたら、3 つのアクティビティが必要でした。1 つはメイン メニュー用、もう 1 つはユニットのリスト用、もう 1 つは値の入力用です。しかし、なぜ?これら 3 つのアクティビティのいずれかをアプリケーションとは別に起動する必要があるのはなぜですか? メイン メニューのアクティビティを起動したい場合は、アプリケーション全体を起動してみませんか? ユニットのリストだけが必要な場合は、アプリケーション全体を起動してください。一部の Facebook クライアントが圧力単位間で値を変換しようとしているのとは異なります (単位のリストは一度に 1 つのカテゴリしかカバーしないため)。また、電卓のアクティビティを起動しても、変換を実行するためにリストに戻る必要があり、リスト アクティビティが起動されないため、まったく機能しません。
とにかく、私が間違っていて、人々がそれを賢く使っていたとしても、私が慣れ親しんでいるように、Android SDK が実際にはフォームをサポートしていないという問題がまだ残っています。はい、ViewAnimator、ViewSwitcher などがあります。しかし、それらが行うのはその場所でレイアウトを切り替えることだけであり、フォーム自体を切り替えることはほとんどありません。したがって、少なくともその機能に近づくための唯一の選択肢は、アクティビティを使用することです。そして、正方形に戻ります。
簡単に言えば、Android の哲学から何かが欠けているのでしょうか? アプリケーションのフォームごとに個別のアクティビティ (および結果として個別のプロセス) を使用するのはやり過ぎだと確信しているからです。もしそれが本当で、誰もがそれを知っているなら、なぜ Android には実質的なフォーム切り替えメカニズムがないのでしょうか?
この問題に関する明確化を事前に感謝します。