2011-12-09 8 views
3

私はAndroid開発の第一歩を踏み出している比較的経験豊かな.NET/iOS開発者です - 誤った経路を避けるために役立ちますガイダンス:Androidのアーキテクチャの第一歩 - 大きな間違いを避けるのを助けてください

本質的に、マップ/リスト上に位置を表示するアプリがあります。ユーザーが地図をスクロールすると、その場所がJSON Webサービスから取得されます。場所をタップすると、別のJSON Webサービスが呼び出され、その場所のライブ情報を取得できます。ライブ情報が表示されます。

ので、様々な「入門」Androidのドキュメントを読んだ、私は想像私が必要:

  1. 活動場所のメインマップビューを表示するには、
  2. リストを表示する2番目の活動見る?私は、各アクティビティがアプリの画面全体でなければならないという印象を受けるので、これらは奇妙に思えます。私は他のUI要素を永続化したいと思います。 (ビューを切り替えるボタン、設定のボタンなど)これは可能ですか?
  3. Webから場所を取得するサービス(またはIntentService?)。ブロードキャストを介して、またはバインドする必要があるときに、新しい場所が取得されたときに、ActivityおよびContentProviderがどのように通知する必要がありますか?
  4. ロケーションをキャッシュし永続化するためのContentProvider。コンテンツプロバイダーは、新しいデータを表示できるようになったときに活動にブロードキャストする必要がありますか?

私は少し失われているので、あなたの助けを非常に感謝します!

カルロス

PS:十分な人々が

+0

(参考)http://stackoverflow.com/questions/8428209/google-map-with-android/8428414#8428414 – MKJParekh

答えて

1

はい場所

のメインマップビューを表示するための活動を経るさらに後に任意の提案をしたい場合は

がコメントをしてくださいあなたのメッセージ表示用のマップオーバーレイ技術を使用

リストビューを表示する2番目のアクティビティはありますか?私は から、それぞれのアクティビティが のアプリ全体の画面でなければならないという印象を受けるので、これらは奇妙に思えます。私は他のUI要素を永続化したいと思います。 (例えば、ボタンを に切り替え、設定用ボタンなど)これは可能ですか?

必ずしもそうである必要はありません。 Fragments APIをご覧ください。 UIの一部だけを切り替えることができます。 Android 3.0で導入されましたが、正式なバックポートが存在するため、以前のAndroidバージョンでも使用できます。

ボタンを使用すると、ボタンをアクティビティ、1つのフラグメントのマップ、別のマップのリストに配置し、ボタンを保持したままマップをリストに切り替えることができます。

Webから場所を取得するサービス(またはIntentService?)。 ブロードキャストを介して新しい の場所が取得されたとき、またはそれが にバインドされるべきときに、ActivityおよびContentProviderに通知する方法を教えてください。

これは強くお勧めします。ファイルをダウンロードするなど、バックグラウンドで長時間のダウンロードがある場合は、サービスを使用する必要があります。短期間のJSONリクエストは、UIプロセスで処理できる必要があります。そのためにAsyncTaskまたはExecutorを使用してください。ほとんどすべてのリクエストをサービスに入れてもいいと私は信じています。

ロケーションをキャッシュして保持するためのContentProvider。新しいデータが表示されるように が利用可能な場合は、 コンテンツプロバイダがアクティビティにブロードキャストする必要がありますか?

必須ではありません。他のアプリケーションやシステムからコンテンツにアクセスできるようにするには、ContentProviderが本当に必要です。 HTTPキャッシングの場合は、データベース/ファイルシステムに直接アクセスすることができますが、より良い方法ではApache HTTP Client Cacheを使用することもできます。既に組み込まれているApache HTTP Clientを使用する場合はうまく動作します。

+0

ありがとう、それは非常に包括的です。いくつかの質問:(1)私はMonoを使用していると言いましたが、バックポートがこのアプローチと互換性があるかどうか知っていますか?そして、(2)私がContentProviderを使用しない場合でも、データレイヤをどのように作成するかについて少し混乱します。オブジェクトをデータベースにシリアライズ/デシリアライズするシングルトンクラスを使用しますか?基本的には、各ロケーションオブジェクトには、DBに保存する必要のあるさまざまなフィールド(例:緯度/経度/名前)があり、アプリの負荷間で持続できるようになっています。 –

1
  1. ポイント1及び2に対して助言しない限り、私は、Androidのためにモノを使用して開発することがあります:あなたは、画面の一部を更新するために、フラグメントを使用することができ、活動複数のフラグメントのコンテナとして機能します(APIレベル10以下のフラグメントを移植するための互換ライブラリを使用します)

  2. リモートWebサービスから場所を取得するには、AsyncTaskを使用してください。

  3. AsyncTaskは、リモートフェッチ、このリストを更新するために使用することができ、マップまたはそのフラグメント

1

1の完了時に呼び出されるコールバックonPostExecute(..)を有しています。マップビューにはMapActivityを使用できます。

2。位置更新者チュートリアル

http://www.vogella.de/articles/AndroidLocationAPI/article.html

4のリンクをたどるしなさい代わりListActiviy

3の単一のビューでボタンを含むようにアクティビティと場所のリストビューを使用します。uはuはそれ

関連する問題