オンライン取引のデータを収集する活動があります。コレクションが終了すると、Webサービスを呼び出してその応答を待ってからバックグラウンドスレッド(具体的にはAsyncTask)を実行し、それをアクティビティに返します。一方、進捗ダイアログが表示されます。Androidのバックグラウンドスレッドの管理とアクティビティのライフサイクル
アプリケーションが終了した場合やユーザーがキャンセルしても(ただし、まだWebサービスに通知する必要がある場合)、バックグラウンドプロセスをキャンセルして、コンフィグレーションの変更によってアクティビティが破棄された場合は、またはメモリ。私はonRetainNonConfigurationInstance()を使用して、AsyncTaskからアクティビティを切り離し、保持し、次のアクティビティに再接続することを理解しています。すでにインフラストラクチャがあります。ライフサイクルコールバックの中には、アプリケーションが正常にシャットダウンしているかどうかを調べるisFinishingメソッドがあります。私は、進行ダイアログのコールバックでユーザーのキャンセルを処理することもできると信じています。
私は2つの簡単な質問している:私の活動は がメモリ不足のため死亡した場合には()を
ウィルonRetainNonConfigurationInstanceと呼ばれますか? (原因が の設定変更の場合は、それがわかります)
onStop()とonDestroy()が呼び出されない状況はどこですか(開発者ガイドで強調されていますか? (私は、キャンセルを扱う私の のコードは常に実行するかどうかを知りたい。)
すべてのすべてで、私は確認することができますonRetainNonConfigurationInstance()とisFinishingとonDestroy()を()実装することにより、すべての中で、確認されていること状況、私のバックグラウンドスレッドはそれに応じて処理されますか?
BONUS質問:何らかの理由でアプリケーションが強制終了された場合(永久に言えば)、AsyncTaskが応答を保存する方法を提供するにはどうすればよいですか?共有プリファレンスのインスタンスを保持し、それにデータを書き込むことはできますか?
タクス、私はあなたが答えてくれることを願っていました!だから私は、メモリが足りなくてプロセスが終了したときにisCancelled()が検出されたときに別のWebサービス呼び出しを行う機会はなく、データを書き込むのに十分な時間があることを願っています(まだ、それとも破壊されているのでアドバイスもされていませんか?) finishを呼び出す前にバックグラウンドスレッドを取り消すことができ、onReatinNonConfigurationInstance()は設定の変更を処理するのに十分です。 – Vincent
@Vincent:「これに共通の設定を使用することはできますか?それとも破壊されているのでアドバイスしていませんか?」 - SharedPreferencesの値は、アプリケーションがアンインストールされるまで「破棄」されません。つまり、SharedPreferencesは、他の種類のファイルを使用する場合よりも漸進的に優れています。あなたが他のもののためにデータベースを使用しているなら、私はそこにあなたの情報を格納することを検討したいと思います。 – CommonsWare
私は記憶装置を意味しませんでしたが、オブジェクトを書くために使用する必要があります。私が推測できる限り、それは現在のアプリケーションにリンクされています。ごくわずかな量の一時的なデータしか保存されていないので、私はまだデータベースを使用していません。しかし、私はその考えを考えてみます、トランスアクショナリティーはかなり良いと思います。あなたの答えをありがとう! – Vincent