1

私は最近Androidスマートフォン用にコーディングしていますが、疑問に思っています...このIntentクラスは、新しいプログラミングスタイルの概要を説明することになっていますか?

APIの設計がMVCを思いとどまらせているのではないかと思っていました。インテントは、すべてのユーザー関連オブジェクト(アクティビティ、サービス、その他のアプリなど)と対話するための主な方法です。

私の思考の流れは正しいですか?ビジネスロジックによる「汚染」活動に固執する必要がありますか?

私はAndroid開発者サイトを読んでいますが、特定のコーディングスタイルは推奨されていません。

4

3 に答える 3

3

コーディングスタイルとプログラムアーキテクチャを混同しているように見えるため、質問は完全には明確ではありません。

私の考えでは、Androidはコーディングスタイルに関して何も変更していません。Javaのコーディングスタイルは引き続き正常に機能し、ほとんどのAndroidアプリは他のアプリと非常によく似ています。要約すると、Androidでやりたいことがいくつかありますが、他の言語ではあまり行いません。詳細については、Androidガイドを参照してください。 基本的な考え方は次のとおりです。メモリは限られています。必要がない場合は使用しないでください。

プログラムアーキテクチャ全体に関する限り、そうです、Androidスタイルは、(インテントオブジェクトを介した)メッセージパッシングスタイルに大きく基づいています。アクティビティ内のGUIイベントに反応する方法は、ほとんど同じです。イベントハンドラーを使用して、ボタンの押下などのイベントに反応します。ただし、プラットフォームは、さまざまなコンポーネント(アクティビティ、サービス、BroadcastReceivers)を使用したアプリの設計に重点を置いています。 、など...)およびそれらの間で通信する意図。インテントはコンポーネント間でデータを交換する柔軟な方法を提供しますが、インテント内で大量のデータを渡すのではなく、そのようなものをContentProviderなどに配置する必要があります。

于 2012-05-08T18:38:05.570 に答える
1

意図の送受信は、コマンドメッセージの送受信(パブリッシュ/サブスクライブチャネルと同様)によく似ています(たとえば、分散エンタープライズアプリケーションの場合、これはスタイルではなくアーキテクチャに関するものです)。このパターンは、相互作用するアプリケーションの疎結合システムの設計に役立ちます。
1台のコンピューターでコンポーネントとアプリケーションの相互作用に使用する前に同様のアーキテクチャを見たことはありませんが、他のアプリケーションを使用してアプリケーションを設計し、機能/コンポーネントのエコシステムを簡単に構築するのに役立ちます。

于 2012-05-08T18:41:41.283 に答える
1

私はこのOReillyの本から取った次のアイデアをたくさん取り入れました。これは私にとって最もうまくいったことです。

アーキテクチャに関する限り、AndroidのUIをページコントローラーパターンとして考えるのに役立ちました。実際には、.NetWebフォームに似ていることがわかりました。そうです、それはMVC(少なくともそのページコントローラーフレーバー)に適合します。アクティビティはコントローラーであり、通常はビューをXMLで保存し、モデルを好きなように構築できます。

AndroidにはWebっぽいアイデアがたくさんあります。インテントはHTTP、より一般的にはRESTによく似ています。インテントには、関係する内容を示す「名詞」があります(明示的なクラス宣言、つまり特定のアクティビティに移動するか、インテントフィルターを使用してより暗黙的にすることができます)。アクションはHTTP動詞(Get、Post)によく似ています。など)、バンドルはクエリ文字列パラメータまたはペイロードのリストによく似ています...など。

また、Webページと同様に、アクティビティがそれ自体を処理できるようにする必要があります。つまり、大きなシリアル化されたオブジェクトをアクティビティからアクティビティに渡したくないということです。特定のレコードのIDを次のアクティビティに渡して、そのアクティビティに取得させるだけで、よりクリーンで復元力があり、信頼性が高くなります。 db(ContentProvider、その他の永続ソース...)からのそのIDで記録します。アクティビティはまた、ゆるく結合されることを意図しており、さまざまなパスからアクティビティにナビゲートできるようになっているため、アクティビティをより再利用しやすくなります。したがって、アクティビティの呼び出し元が単にrecordIdを提供できるようにすることは、そのコンシューマーが大きなシリアル化されたオブジェクトを提供することを期待するアクティビティよりもはるかに簡単です。

結論-いいえ、アクティビティをビジネスロジックで汚染したり、アプリケーション層やゲートウェイなどに隠したりする必要はありません。永続性に関しては、ContentProviderインターフェースはかなりうまく設計されています-私はそれがとても好きです。また、Android RESTfulテーマを継続し、URLと動詞(クエリ、削除、更新、挿入)を介してコンテンツにアクセスします。

于 2012-05-08T20:11:36.940 に答える