0

私はいくつかの計算の重い関数を自分のアプリケーションに実装しました。入力の種類によっては、スレッドが戻るまでに数分かかる場合があります。この間、私は、ユーザーが別の作業をして次の作業のためにデータを準備するために他の作業をすることができるようにします。その後、サービスの計算が終了したら、トーストで結果を確認し、サービスを開始したアクティビティにチェックインする必要があります。残念ながら私はこの時点で固執しています。Android - 重い計算をバックグラウンドで実行し、結果をアクティビティに返す

現時点で破壊されているアクティビティと何とか通信できますか?保存された状態を変更するのと同じように、結果が再表示されるようにします。私が見つけた唯一のコミュニケーションの方法は、サービスからのブロードキャストによるものでしたが、これはアクティビティが聴くことを必要としますが、これはサービスが終了した時点では存在しないため不可能です。私に発生した

唯一の解決策は、サービスが終了されたファイルを書き込み、その後の活動でそれを読み取ろうとするが、それが可能だ場合、私は、ファイルシステムで動作しないことを好むだろうました。

私はここに何かを見逃しているか間違った方向に考えていますか?

答えて

0

あなただけのServiceからSharedPreferenceに書くことができます。

Activityは、開始時に設定をチェックし、結果が計算結果であったことを示すマーカーを付けることができます。

Activityから同じSharedPreferenceに書き込んで無効にして、次の結果に使用できるようにすることもできます。

0

私はAsyncTaskを使用して、演算の値をステートフルな場所に戻します(ApplicationクラスまたはSharedPreferences偶数を使用します)。

はAsyncTaskの完了時に、あなたのアクティビティを起動し、あなたがステートフルに表示に格納された値を取得してもらいます。

基本的に、最初の2つの回答を組み合わせると、設定する必要があります。

関連する問題