2017-05-26 9 views
0

私は既にサービスの代わりにアクティビティでAndroid音楽プレーヤーを実装しました。 MediaPlayerクラスは、バックグラウンド(onPause())で長時間実行され、アプリケーションインスタンスを破棄するまで停止しないことに気付きました。それでは、なぜ私はメディアプレーヤーのためのサービスが必要ですか?本当に必要ですか?サービスの代わりにアクティビティでAndroid MediaPlayerを実装すると、何が問題になるでしょうか?

答えて

0

アプリケーションの実行時に必要です。あなたの活動はメインスレッド(UIスレッド)で実行されます。 UIスレッドでタスクを5秒以上実行すると、ANR(Application Not Responding)ダイアログアラートが生成されます。これは、ユーザーがあなたのアプリとやり取りするのを妨げているため、応答しなくなるからです。

+0

UIスレッドで5秒以上がANRを生成しますか?私は今まで私のアプリケーションでこの種のものを気付かなかった。 –

+0

@ Md.MustafizurRahmanこれは、Media PlayerクラスのonPause()を使用しているためです。アクティビティの実行中にMedia Playerクラスが使用されている場合は、アプリケーションでANRが生成されます。 –

+0

しかし、メディアプレイヤーがオーディオを再生していて、アクティビティが実行中(onPause()ではなく)の場合、ANRは発生しませんでした。これがあなたのANR発生のポイントではありませんか? –

関連する問題