私の理解によれば、アンドロイドでは、サービスはUIスレッド上で実行されます。サービスがバックグラウンドでどのように動作するのか少し混乱します。UIスレッドをブロックしないといけませんか?彼らはどのようにしてメインスレッド上にあり、同時にバックグラウンドで実行できるのでしょうか?Android - サービスはどのようにバックグラウンドで実行できますか?
0
A
答えて
0
自分でバックグラウンドで実行を簡単に整理できます。ただし、単一のコンシューマルなジョブを一度実行したい場合は、IntentServiceの使用を検討してください。別のスレッドで実行されて終了します。 一方、通常のサービスは無期限に実行され、それにバインドすることができます。 バックグラウンドタスクを整理するにはいくつかの方法があります - AsyncTask、別のスレッド、そして最も強力で便利な方法 - rxJavaライブラリを使用する
バックグラウンドスレッドで何らかの操作を実行し、 rxJavaとメインスレッド:
String arg = "132";
Observable.defer(() -> Observable.just(arg))
// start operation on background thread from
// thread pool
.subscribeOn(Schedulers.computation())
.map(arg -> {
// do you processing here
String result = "123";
return result;
})
// switch to main thread
.observeOn(AndroidSchedulers.mainThread())
.subscribe(v -> {
// process results
Log.i("My service", "result: " + v);
}, error -> {
// handle error
});
あなたが見ることができるようにタスクの進行に伴い、これはバックグラウンド動作を管理する非常に便利な方法ですが、よりimportaint、あなたがスレッドを切り替えることができます。
0
サービスは、常にUIスレッド
上で実行されるしかし、あなたはUIスレッドでサービスを実行した場合、UIがブロックされます。
UIは、デフォルトでは、メインスレッドで実行
1
サービスをブロックされることはありませんが、彼らはバックグラウンドで実行するようにだから、スレッドやAsynctaskの助け以内にあなたは、SAPレート・スレッドを介してサービスを呼び出すことができますユーザーから見れば、Service
を裏付ける画面はありません。
あなたはあなたのサービスのいずれか、バックグラウンドスレッドで実行Service
サブクラスを使用して、独自のスレッドを提供したい場合は - 新しいThread
を経由して、JavaのExecutor
枠組みを、RxJava
、AsyncTask
、またはワン」のIntentService
サブクラスを使用します「ショット」タイプのタスクを実行します。
関連する問題
- 1. GPSサービスをバックグラウンドで実行する(Android)
- 2. バックグラウンドでサービスを実行
- 3. Python:Celery、どうすればバックグラウンドで実行できますか?
- 4. Androidサービスはバックグラウンドで実行されません
- 5. バックグラウンドで実行されるサービスまたはコンソールアプリですか?
- 6. モバイルWebアプリケーションをバックグラウンドで実行できますか? (iOSとAndroid)
- 7. サービスでバックグラウンドでアンドロイドアプリを実行できません
- 8. タイマーをバックグラウンドで実行するにはどうすればよいですか?
- 9. Android:サービスから何かを行うようにアクティビティをどのように指示できますか?
- 10. AndroidでバックグラウンドでWebViewを実行するにはどうすればよいですか?
- 11. Androidでバックグラウンドでイメージを実行するにはどうすればよいですか?
- 12. AndroidでバックグラウンドでBluetooth接続を実行するにはどうすればよいですか?
- 13. iPhone:バックグラウンドでサービスを実行する
- 14. どのようにAndroidでずれた行レイアウトを実装できますか?
- 15. NSURLConnectionバックグラウンドで実行したときのバグ....どのように修正できますか?
- 16. Android SMSサービスはバックグラウンドで実行され、即時更新されます
- 17. バックグラウンドで実行されている場合、PHP CLIスクリプトはどのように検出できますか?
- 18. 他のクラスはどのように実行できますか?
- 19. 現在実行中のLinuxプロセスをバックグラウンドで実行するにはどうすればよいですか?
- 20. Androidでバックグラウンドでプロセスを実行する
- 21. Androidのメディアプレーヤーをバックグラウンドで実行する
- 22. Android開発でバックグラウンドでスレッドやサービスを追加するにはどうすればよいですか?
- 23. Androidアプリ:バックグラウンドでは何が実行されていますか?
- 24. Visual StudioはどのようにWebサービスをローカルで実行しますか?
- 25. PHP:どのようにバックグラウンドでバッチスクリプトを実行するには、[Windowsの]
- 26. バックグラウンド実行中のサービスからアラートダイヤログ(ポップアップ)を表示するにはどうすればいいですか?
- 27. アプリケーションを閉じたときにアプリケーションをバックグラウンドで実行するにはどうすればよいですか?
- 28. グローバルタイマーをバックグラウンドで実行することはできますか?
- 29. Androidモバイルはどのようにアプリケーションを実行しますか?
- 30. 「ロケーションアップデート」プロセスはどれくらいの期間バックグラウンドで実行できますか?
https://developer.android.com/training/run-background-service/index.htmlを参照してください。 – sasikumar