2011-01-07 25 views
0

私はこの記事を見ました(http://stackoverflow.com/questions/151777/how-do-i-save-an-android-applications-state)。私は信じている同様の問題を抱えている。Android:アプリケーションの状態について混乱しています

私は、(mediaPlayerオブジェクトを使用して)オーディオストリームをリッスンするアプリケーションを持っています。ホームボタンを押すと、ストリーミングが継続され、アプリが非表示になります。その後、私は私のアプリに戻り、私が終わったら停止を押すことができます。これは私が欲しいものです。しかし、私が[戻る]ボタンを押した場合、後で私のアプリケーションを再び開くと、そのアプリケーションは新鮮なものから再描画されます。テキストボックス、ボタン、すべてがリセットされました。初めてアプリケーションを開いたので、オーディオストリームを停止できません。アプリケーションがストリーミングしているのを忘れてしまったため、stopをクリックしても何も起こりません(ストリームはメインのUIスレッドとは別のハンドラの下で実行されるため、ハンドラのトラックを失った 'reset'から推測しています)。

[戻る]ボタンでこれが起こるのはなぜですか。どのように停止できますか?

答えて

0

ストリーミング機能をAndroidサービスに移動します。アクティビティを使用して、サービスにバインドし、サービスと対話します。

+0

これはまだ問題が残っていますが、このようにする必要はありませんが、私はその良い点を考えています。「開始」というラベルの付いたボタンがあります。テキストが 'start'の場合にクリックすると、ストリームが実行されるハンドラが開始され、ボタンのテキストが 'stop'に変更されます。クリックすると、テキストは「停止」し、ストリームを停止し、テキストを「開始」に戻します。 – jwbensley

+0

ボタンを押してストリームを開始すると、ボタンのテキストが「停止」に変わります。その後、「戻る」を押して上記のようにストリームを聞いてからストリームを停止するために私のアプリケーションに戻ります。インターフェイスが再描画され、ボタンに「開始」と表示されますので、停止できません。 startをクリックすると、別のストリームが開始されます。そのため、2つのタイムアウトがわずかにずれていて、stopを押すだけでこの新しいストリームインスタンスが停止します。私がこのような単一のボタンでサービスを使用した場合、私はそれがまだ '停止'ではない '開始'を開始するアプリに戻ります、正しい? – jwbensley

+0

はい、これは正しいです。アクティビティの状態を保存する必要があります。または、サービスを使用している場合は、実行中のストリームがあるかどうかサービスに問い合わせてください。 Backを押してアクティビティを再起動すると、onCreateが呼び出されます。したがって、saveInstanceState.getBoolean( "HAS_RUNNING_STREAM")のようなものを使用してください。 – 0xf3f

関連する問題