1

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

だから私の質問は、どのように進めなければならないのですか?? リモート サービス用の AIDL インターフェイスを実装するか、すべての mapactivity をロケーション リスナーに登録しますか??

答えてくれてありがとう。下手な英語でごめんなさい :P

4

3 に答える 3

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で、クライアントとサービスからの双方向通信が実装されています。

于 2012-01-09T16:52:15.447 に答える
0

まず根拠:

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

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


したがって、私は提案します:

  1. ローカル サービスを使用して単一プロセスのアクティビティとしてアプリを実装し、それを実行するだけにしてください。
  2. それをしたくない場合 (あなたを責めることはできません ;) )、または問題が発生した場合は、おそらく Fragment 内にカプセル化された MapView から始めることをお勧めします。ここでは、開始するためのディスカッションを示します。

要するに、Android の実用的な断片化により、アプリを人為的に分割して潜在的にIPC で歯を食いしばってください。少なくとも私の意見では。

于 2012-01-08T16:30:48.657 に答える
0

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

于 2012-01-08T15:02:19.997 に答える