2

作業を実行するサービスを含むアプリを作成しています。メインのアクティビティには、サービスの作成中に渡されたメッセージで更新される UI があります。私の問題は、メインのアクティビティによるサービスの最初の作成中に、メッセージハンドラーが有効であり、サービスからのメッセージを正常に報告することです。「戻る」または「ホーム」ボタンを押すと、メインのアクティビティは破棄されたように見えますが、サービスはまだ実行中です。

最後に、アプリを再び起動すると、サービスが実行されていることがわかります (Bluetooth 経由でハードウェアと通信しているため) が、UI アップデーターへのハンドルが無効になり、アプリはステータスの更新を受信しません。

それで、サービスの「ハンドル」または「インテント」を取得して新しいメッセージハンドラーに渡す方法はありますか、またはメインのアクティビティを「分類」して破壊されないようにするより良い方法はありますか。

4

1 に答える 1

0

これらの手順に従うか、この確認を再度行う場合

  1. onbind()--> ibinder を返します。
  2. Binder というクラスを拡張し、メソッドをオーバーライドして、そこからこのサービス参照を返します。
  3. ユーティリティメソッドを次のようにします:サービスからデータを返すサービス内のgetText
  4. メイン アクティビティに serviceconnection インターフェイスを実装し、サービスの接続/切断に関する 2 つのメソッドをオーバーライドします

5.on serviceconnected -> ibinder オブジェクト呼び出し getService メソッドを使用して、サービスにキャストします。

  1. 上記の手順でサービス オブジェクトを取得したので、メイン アクティビティ内でサービスの getText メソッドを呼び出すことができます。つまり、String text_returned=your_service.getText()このテキストを任意の場所に設定します。

役立つことを願っています。

于 2013-04-19T06:03:34.150 に答える