10

2 つの問題があります。

  1. 接続アクティビティリモートサービスにはAIDLを使用する必要があることを知っています。私はこれを試してみましたが、うまくいきましたが、一方向の接続例しか見つかりません。簡単に言えば、サービスから何かを読み取る (活動によって)。しかし、いくつかのデータをアクティビティに(サービスから、またはサービスから)送信するための解決策が必要です。サービスはイベントの直後にアクティビティに情報を送信する必要があるため、これは非常に重要です (ネットからデータを取得します)。
  2. リモートサービスから閉じたアプリケーション(アクティビティ)を再び前面に出す方法はありますか?

どんな提案でも大歓迎です。

よろしく

アートク

4

2 に答える 2

9

サービスは、イベントの直後にアクティビティに情報を送信する必要があるため、これは非常に重要です(ネットからデータを取得します)。

AIDLを双方向通信に使用できます。サービスインターフェイスだけでなく、AIDLを介してコールバックインターフェイスを公開する必要があります。クライアント.Stubはコールバックのを持ち、そのインスタンスをパラメータでサービスインターフェイスのメソッドに提供します。これは少し複雑になります-これは私の本からのテクニックを示すサンプルアプリのペアです:

リモートサービスから閉じたアプリケーション(アクティビティ)を再び前面に表示する方法はありますか?

あなたのサービスは電話をかけることができますstartActivity()が、一般的にそれは悪い考えです。突然あなたの活動が前面に出たとき、ユーザーは何か他のことをしている最中かもしれません。時折、ユーザーはあなたの活動がより重要であるとみなすかもしれませんが、常にではありません。Notification代わりに、ユーザーの注意を必要とする何かがアプリにあることをユーザーに知らせるために、を使用することを検討してください。

于 2012-11-11T13:15:55.250 に答える
1

まず、サービスにプライベート resultreceiver 変数を作成します。次に、接続されたアクティビティを介してこの結果レシーバーを設定するメソッドを作成します。次に、AIDL を使用して、先ほど作成したメソッドを介して、アクティビティから実行中のサービスに resultreceiver を渡します。次に、resultreceiver が null でない場合は、サービスで resultreceiver.send を使用します。

始めるためのいくつかの例 http://lalit3686.blogspot.com/2012/06/how-to-update-activity-from-service.html?m=1

http://chrisrisner.com/31-Days-of-Android--Day-28 –Intents-Part-3--Service-Intents

于 2013-02-22T11:51:31.677 に答える