今日はIntentについて学習していて、サービスをアクティビティにバインドしていました。サービスからアクティビティへデータを転送するのは簡単で素晴らしい方法でした。サービスを開始するアクティビティをテストしたかったので、このサービスはウェブページを呼び出してデータを取得します。私は、アクティビティがサービスメソッドを呼び出すことができるように、アクティビティをサービスにバインドして、結果をトーストしました。サービスメソッドでは、Webページを呼び出してデータを返します。私はそれをテストしたときにnullポインタ例外が発生していました。私は正しい方法でやっていないと確信しています。これを正しく実装する方法はありません。サービスを開始してデータを返す
1
A
答えて
1
ここではかなりのスレッド同期の問題を扱っています。何らかのリスナー・パラダイムを登録すれば、サービスが作成しているデータのリスナーとしてアクティビティーを登録することができます。現在のところ、サービスとアクティビティはまったく同期していないため、アクティビティは準備が整う前にサービスから結果を取得しようとします。リスナー・パターンまたはオブザーバー・パターンについて議論しているリソースは数多くあります。
サービスが実際に正しく機能しているかどうかはわかりません。私はちょうど2つの間のあなたのコミュニケーションを見ている。
+0
スレッドに関する問題ここでは、私は意図を巡っていたが、最初にハンドラを調べるつもりだったが、スレッドの問題を回避する必要があるようだ。 –
0
サービスから結果を返すときは、あなたのアクティビティにResultReceiverインターフェイスを実装し、putExtra経由で受信者オブジェクトをサービスに渡す方が良いです。あなたのサービスで受信者オブジェクトを取得し、receiver.send()を呼び出して、バンドルで何かを送信する機能を呼び出します。 [私はこのパターンをIntentService少なくともテストしました。]
編集:完全な実装のためにthisの投稿をチェックしてください。
関連する問題
- 1. Windowsサービスを開始
- 2. アンドロイドはサービスを開始します
- 3. Androidサービスを開始しますか?
- 4. サービスが開始しない
- 5. サービス開始時にNginxが502を返す
- 6. Androidサービス - サービスを開始して別のアクティビティにリダイレクト
- 7. AudioRecordは開始後に空のデータを返します
- 8. Androidでサービスを開始
- 9. サービスでタイマーを開始
- 10. Android:パラメータでサービスを開始
- 11. Android NFC開始サービス
- 12. サービスを子プロセスとしてプロセスを開始します
- 13. AlarmManagerによって開始されたサービスから新しいアラームを開始
- 14. サービスを停止し、バッチファイルを実行してからサービスを開始する
- 15. 正確に時間の開始時にサービスを開始し、その後1時間ごとに繰り返す
- 16. データ消去後にサービスを開始するには?
- 17. ブロードキャスト受信機を使用してAndroidサービスを開始する
- 18. System.Diagnostics.Process.Startを使用してサービスを開始する
- 19. ウィジェットボタンをクリックしてサービスを開始するには?
- 20. Androidでアラームマネージャを使用してサービスを開始するには?
- 21. Command Line(CDH 5)を使用してHadoopサービスを開始する
- 22. 開始するサービスを作成する
- 23. AlarmManagerを使用して別のサービスからサービスを開始する
- 24. JSONデータを返すWebサービスを開発するには
- 25. ドッカー:rootとしてサービスを開始する方法
- 26. サービスがハングしてからプロセスを開始するUseShellExecute false
- 27. 初期値でサービスを開始しています
- 28. ActiveMQをプログラムではなくサービスとして開始する
- 29. Java Webサービス操作のスレッドを作成して開始する
- 30. Rally REST WebサービスAPIを開始する
コードの一部を見ることなく、伝えることは不可能です。 –
私はコード –
を追加しました。知っておくと便利なことは、そこではクラッシュが発生する場所で、私たちは干草で針を演奏させるのです。 –