私はこのアイデアの周りに私の頭をラップするいくつかの問題を抱えている、と私はいくつかの入力をしたい。私は新しいスレッド(この場合はRunnableを実装しているクラスで、スレッドは拡張していないクラス)を実行する私の初期のアクティビティからサービスを開始しています。それはonCreate()
です。スレッドはまず、TCPクライアントソケットを作成し、アプリケーションの実行、アクティビティの切り替えなど、バックグラウンドでリクエストを送信してX秒ごとに応答を受信し始めます。ただし、すべてのアクティビティからスレッドにアクセスできるようにする必要があります。 UIエレメントがトリガーされたときにカスタムリクエストを送信することができます。サービスは静的コンテキストからアクセスできますが、実行中のスレッドインスタンスにアクセスしようとすると、メインスレッドでネットワーク操作を実行する際にエラーが発生します。つまり、実際のインスタンスではなく、アクセスしているUIスレッドです。私はサービスが新しいメッセージをポーリングできる共有Application
クラスのメッセージキューを実装することを考えましたが、それは醜いようです。たぶん私はこの間違いを犯しているだろうし、この問題に近づくためのより良い/よりクリーンな方法があるだろうか?助言や助けをいただければ幸いです。スレッドにアクセスするサービスによって開始
1
A
答えて
1
Looper/Handlerメカニズムを使用してスレッドにメッセージを送信できます。
+0
ありがとうございます、これは私が入ってきた方向です、そして、それは完全に動作するようでした。何らかの理由で私は最初にそれを見落としました。 – Matt
関連する問題
- 1. Windowsサービスによる同時スレッドの開始と停止
- 2. boot_completedサービスとstartForeground開始サービスにスレッドが必要ですか?
- 3. AlarmManagerによって開始されたサービスから新しいアラームを開始
- 4. サービスでスレッドにアクセスする
- 5. スレッドのrun()で新しいサービスを開始するには?
- 6. ウィジェットによって開始されたサービスのRoboGuiceインジェクション
- 7. Java Webサービス操作のスレッドを作成して開始する
- 8. C#プログラムによるWindowsサービスの開始
- 9. スレッドとスレッド開始
- 10. デーモンスレッドによって開始されたスレッドはデーモンスレッドでもありますか?
- 11. エラー1069 sqlserverサービスの開始時にログオンに失敗してサービスが開始しなかった
- 12. _beginthreadexでスレッドを開始するには?
- 13. Windows CE 6.0サービスでスレッドを開始する
- 14. スレッドで複数のサービスを開始する
- 15. AsyncTaskはサービスによって開始されますか?サービスが停止すると終了しますか?
- 16. C#スレッド - スレッドを開始および停止する方法
- 17. シェフ:サービス開始時に何かする
- 18. WCFサービスを開始するには?
- 19. SymmetricDSサービスを開始するには?
- 20. サービスによって開始されたアクティビティへのデータの受け渡し
- 21. Mysql壊れたibdata1ファイルによってサービスが開始されない
- 22. スレッドが開始パラメータを持つときにスレッドを開始して結合する
- 23. 別のスレッドの後にJMeterスレッドを開始する
- 24. アクセス(パスワード使用していない:NO) 'をサービスMySQLの開始'
- 25. Javaスレッドの開始 - 停止同じボタンをクリックして開始
- 26. centos7を使って起動時にサービスを開始する方法は?
- 27. java.lang.IllegalThreadStateException:スレッドがすでに開始されている
- 28. スレッドを開始するRubyクラスは決してGCによって破棄されません
- 29. メソッドdeleteWinstoneTempContentsによってJenkins 2.32.1の開始が失敗する
- 30. Cortanaスキル - トリガーによってCortanaを開始する
いいえ、あなたは正しい方向に向かっています。そのメッセージキュー( 'BlockingQueue')を使ってスレッドと通信します。 –
AIDL(http://developer.android.com/guide/developing/tools/aidl.html)を使用してサービスと通信することができます – ethrbunny