6

私の要件を満たす、バックグラウンドで実行できる URL から MP3 をストリーミングするための適切なアプリケーションが見つからなかったため、自分で作成することにしました。Froyo 以上を実行している場合、ネイティブの MediaPlayer を使用して MP3 をストリーミングするのは信じられないほど簡単であることがわかります。

しかし、私の問題は、アプリケーションを切り替えてストリームを継続しようとすると (そのうちのいくつかは 2 ~ 4 時間続きます)、それを聞いている間にゲームや何かをプレイすると、時々死んでしまうことです。何が問題なのか正確にはわかりません。私の推測では、Android システムがそのプロセスを強制終了しても問題ないと判断したのでしょう...しかし、そうではありませんでした。

ストリーミングmp3アプリの代わりにリソースが必要な場合、他のプロセスを強制終了させるためにできることはありますか?

私が試したこと:

android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);

しかし、それは良くありません。

4

5 に答える 5

8

まだ行っていない場合は、サービスをフォアグラウンド サービスにする必要があります。フォアグラウンド サービスは通知バーにアイコンを表示する必要があり、Android システムは極端なメモリ不足でない限りそれらを強制終了しません。

startForeground()のドキュメントを確認してください

于 2011-07-30T03:50:25.777 に答える
2

Droid Incredible が Gingerbread (2.3.4) にアップデートされた後、突然動作することがわかりました。私はまったく変更を加えていません。Froyo のように Gingerbread で死ぬことはありません。Gingerbread でメディア プレーヤーが改善されたことは知っているので、Gingerbread で修正された Froyo のバグがあったと仮定する必要があります。

于 2011-11-18T22:25:08.823 に答える
0

私の知る限り、プログラムを永久に実行することはできません。ある時点で OS がプログラムを強制終了します。しかし、試してみることができるのは、サービスを用意して、有用な情報で時々通知を生成することです。その後、活動を再開してください。

于 2011-07-30T03:44:29.483 に答える
0

これはアクティビティのライフサイクルによるものです。メモリが必要な場合、OS はアプリを強制終了する可能性があります。サービスを検討する必要があるかもしれません

于 2011-07-30T03:44:49.357 に答える
-2

Androidフォンのメモリ管理に問題があり、あなたが説明したようなプロセスが終了しました。Android Boosterのようなプログラムをインストールして、使用可能なメモリを監視し、メモリを大量に使用しているプログラムを閉じて、開いたままにしておくプログラムが実行するのに十分なメモリを確保することを検討してください。

于 2011-07-30T03:42:31.557 に答える