フォーラムで尋ねたり答えたりするのが難しい質問の 1 つがあります。最近、Android OS 上で動作するアプリケーションの設計 (および実装) を任されました。私は .net の世界から来たので、Xamarin.Android フレームワーク (以前は mono for android と呼ばれていました) を使用することにしました。ターゲット フレームワークについて調査を行い、大まかな設計を考え出しました。しかし、私はAndroidの世界に慣れていないので、私のデザインが最高のものであるかどうかはわかりません(または許容できるものでさえあります)。説明はできる限り簡潔にしようと思います。アプリケーションの基本的な要件は次のとおりです。
- アプリケーションは、さまざまなユーザーにさまざまな GUI を提供できる必要があります。
- アプリケーションは、サーバーから取得したデータを表示する必要があります。
- アプリケーションは、ユーザーがサーバー データを変更する手段を提供する必要があります。
- ユーザーの 1 人がサーバー データを変更した場合、他のユーザーに通知する必要があります。
私の研究に基づいて、私は次のことを思いつきます。
各ユーザーにカスタマイズされた GUI を提供するために、アプリケーションは最初にユーザーを認証し、プログラムで GUI を構築するために使用されるサーバーから xml ファイルを取得します。デバイスのローテーションとさまざまなデバイスをサポートする必要があるため、これは多くの作業を意味します。そのため、これに関する考えは大歓迎です。
アプリケーションがサーバーと通信するための最良の方法は、REST ベースのサービス (初期データを取得するための GET とサーバーの状態を更新するための PUT) を呼び出すことだと思います。
サーバーの状態がユーザーの 1 人によって変更されると、他のすべてのユーザーは通知を使用して通知されます (Google クラウド メッセージングまたは古い C2DM を置き換えた GCM)。ほとんどのアクティビティは通知に依存して更新を表示するため、これを実装する最良の方法は Android サービスを作成することだと思います。このサービスはアプリケーションと共に開始され、アプリケーションが実行されている限り実行されます。サービスが開始されると、それ自体が GCM に登録され、ブロードキャストを使用して現在のアクティビティに何かが変更されたことを通知します。
長い文章で申し訳ありませんが、できるだけ簡潔にしようとしました。私が言ったように、これは非常に大まかなデザインなので、どんな考え、アイデア、または批判も大歓迎です.
ウロス