2012-01-08 23 views
1

私は3つのマップアクティビティを持つアプリケーションを作成しています。これらのアクティビティの間でgpsからロケーションデータを共有するために、ロケーションマネージャからの更新を受け取るローカルサービス(Googleチュートリアルなど)を実装しました。 今私はGoogleの提案に従うために、分離したプロセスですべての活動を入れたいと思います。複数のマップアクティビティ間のAndroid共有ロケーションサービス

私の質問はどのようにしなければならないのですか? リモートサービス用のインプリメンテーションとAIDLインターフェイス、またはロケーションリスナーへのすべてのマップアクティビティを登録しますか?答えと私の悪い英語のため申し訳ありませんのために

ありがとう:P

+0

"Googleの提案"についてお聞かせください。あなたはそのURLを教えてもらえますか? –

+0

[link](http://code.google.com/intl/it-IT/android/add-ons/google-apis/reference/com/google/android/maps/MapActivity.html)MapActivityは1つだけサポートされていますプロセスごとに。同時に実行される複数のMapActivitiesは、予期しない望ましくない方法で干渉する可能性があります。 – IncioDev

+0

ああ、私は今参照してください。私の答えは上がっています... –

答えて

0

それが位置情報を必要とするだけで、単一のアプリケーションの場合は、リモートサービスとAIDLを使用して、不要な合併症です。最も簡単な方法は、アクティビティをバインドできるローカルサービスを用意し、サービスがsendBroadcast()を使用してロケーション情報を送信させる方法です。アクティビティは、このデータを取得するためにBroadcastReceiverを登録できます。

+0

ここでは、場所が更新されるたびにブロードキャストを送信するローカルサービスを使用しています。次に、サービスのメソッドを使用してデータを取得します。しかし、私は地図の活動をseparetedプロセスに置くとき私はキャストクラスの例外のエラーがあるサービスのistanceは、サービスメソッドを呼び出す可能性を与える..これはリモートサービスのアイデアから.. – IncioDev

0

まず根拠:

のJavadocに引用ビット...奇妙です。 onResume()とonPause()の間にある「実行中」を理解している場合、通常は同じアプリケーションに属する2つのアクティビティを同時に実行することはできません。そうでなければ動作させるには、おそらくApplicationクラスまたはOS自体を混乱させる必要があります。

私は現在、いくつかのMapActivityサブクラスを使用していて、これまでに何の問題も発生していないアプリを開発しています(エミュレータとデバイスの両方で40時間以上の開発とテスト)。


そこで私がお勧めします:

  1. は、ローカルサービスとシングルプロセス活動としてアプリケーションを実装し、それを実行してみます。
  2. あなたがそれをしたくない場合(あなたを責めないでください))、または何か問題が発生した場合は、MapViewで始めることをお勧めします。おそらくフラグメント内にカプセル化されています。 Here's a discussionを起動してください。要するに

、原因Androidの実用的なフラグメンテーションに、一つのプロセスでは、あなたの活動を維持し、より多くの最低限の実装を開始することにより、より多くの時間をコミットするよりも安全、最終的にはあまり時間がかかり、おそらくより効率的なアプローチになります人為的にあなたのアプリを分割し、潜在的にIPCにあなたの歯をつぶす。少なくとも私の意見では。

+0

今app構造あなたが提案した通りです。 MapActivityには限定されたローカルサービスがあります。サービスはブロードキャストインテントを送信し、アクティビティはAndroidチュートリアルのローカルサービスサンプルのようなサービスメソッドにアクセスできます。私はこの警告をキャッチしましたIllegalStateException接続プールのシャットダウン..あなたはそれについて何か知っていますか? – IncioDev

+0

まあ、自分でそれに遭遇したことはありませんが、私は運が良いかもしれません: http://code.google.com/p/android/issues/detail?id=3756 最後の投稿を見てください。 。 正直言って、なぜ私はこの問題に遭遇していないのか分かりません。私の活動の大半は見解ではあまり効果がありませんが、それは推測です。 –

0

私は最善の方法は、Androidのdoc http://developer.android.com/guide/topics/fundamentals/bound-services.html#Messengerで説明したようにメッセンジャーでIPCを実装することだと思ういくつかの研究の後..私は、このソリューションに結果をここに報告書をテストしますです。..

ベストチュートリアルがhttp://developer.android.com/reference/android/app/Service.html#RemoteMessengerServiceSampleですクライアントとサービスから双方向の通信を実装しました。

関連する問題