私はこのOReillyの本から取った次のアイデアをたくさん取り入れました。これは私にとって最もうまくいったことです。
アーキテクチャに関する限り、AndroidのUIをページコントローラーパターンとして考えるのに役立ちました。実際には、.NetWebフォームに似ていることがわかりました。そうです、それはMVC(少なくともそのページコントローラーフレーバー)に適合します。アクティビティはコントローラーであり、通常はビューをXMLで保存し、モデルを好きなように構築できます。
AndroidにはWebっぽいアイデアがたくさんあります。インテントはHTTP、より一般的にはRESTによく似ています。インテントには、関係する内容を示す「名詞」があります(明示的なクラス宣言、つまり特定のアクティビティに移動するか、インテントフィルターを使用してより暗黙的にすることができます)。アクションはHTTP動詞(Get、Post)によく似ています。など)、バンドルはクエリ文字列パラメータまたはペイロードのリストによく似ています...など。
また、Webページと同様に、アクティビティがそれ自体を処理できるようにする必要があります。つまり、大きなシリアル化されたオブジェクトをアクティビティからアクティビティに渡したくないということです。特定のレコードのIDを次のアクティビティに渡して、そのアクティビティに取得させるだけで、よりクリーンで復元力があり、信頼性が高くなります。 db(ContentProvider、その他の永続ソース...)からのそのIDで記録します。アクティビティはまた、ゆるく結合されることを意図しており、さまざまなパスからアクティビティにナビゲートできるようになっているため、アクティビティをより再利用しやすくなります。したがって、アクティビティの呼び出し元が単にrecordIdを提供できるようにすることは、そのコンシューマーが大きなシリアル化されたオブジェクトを提供することを期待するアクティビティよりもはるかに簡単です。
結論-いいえ、アクティビティをビジネスロジックで汚染したり、アプリケーション層やゲートウェイなどに隠したりする必要はありません。永続性に関しては、ContentProviderインターフェースはかなりうまく設計されています-私はそれがとても好きです。また、Android RESTfulテーマを継続し、URLと動詞(クエリ、削除、更新、挿入)を介してコンテンツにアクセスします。