8

こんにちは、バックグラウンドで実行する MediaPlayer インスタンスが必要なので、サービスの使用を開始しました。

すべて正常に動作しますが、UI が完全に動作していても、しばらくすると ANR (アプリケーションが応答しません) が発生します。サービスがまだメイン スレッドで実行されていることはわかっているので、ANR は理にかなっています。

そこで、独自のスレッドを生成する IntentService を使用してみましたが、頭痛の種しかありませんでした。ワーカーが独立している場合、IntentService は問題ないように見えますが、トラックを変更する必要があるたびにメイン アプリから startService(intent) メソッドを呼び出す必要があり、複数の MediaPlayer インスタンスで終了したくないため、ここではそうではありません。お互いの上で遊ぶ..

また、サービス内でスレッドを使用することを示唆するヒントも見ました。Media Player でそれを行うにはどうすればよいですか? 宣言はそのスレッドにあるべきですか、それとも単に「準備/開始など」にあるべきですか? 私が見たものから、それはうまくいかないようですが、間違って実装しただけかもしれません

おそらく非常に単純な例で、ヒントは非常に高く評価されます。

乾杯

4

1 に答える 1

6

こちらのトレーニング ドキュメントを読むことを強くお勧めします: http://developer.android.com/guide/components/services.html

これは私にとって本当に役に立ちました。そして、オーディオをストリーミングする NPR アプリはオープン ソースなので、こちらのサービスをチェックしてください: http://code.google.com/p/npr-android-app/source/browse/Npr/src/org/npr/android /news/PlaybackService.java

これらの両方を読んで、サービスを使用してスレッドを自分で処理することをお勧めします。私はまだ IntentService を使用していませんが、あなたの経験からすると、音楽ストリーミングを扱うのは間違ったクラスのようです。それが役立つことを願っています!

于 2012-12-07T08:27:11.240 に答える