3

Androidのライフサイクルモデルについての私の理解は、onPause()呼び出されたときに、保存する必要のある状態を保存する必要があるということです。これは、戻った後はいつでもアプリが終了する可能性があるためです。私はジンジャーブレッドをターゲットにしているので、onStop呼ばれることはないかもしれません。

ただし、私のアプリでは、いくつかの状態がリモートサーバーに保存されています。私は定期的にこの状態をフラッシュしますが、onPauseが呼び出された場合、正しいことはわかりません。onPauseが返されるとすぐに、アプリが強制終了される可能性があるためです。別のスレッドでandroidhttpリクエストを実行する必要があるため、これは問題があるようです。onPauseでリクエストを開始してから戻ると、状態を保存するリモートリクエストが完了する(または開始する)前にアプリが強制終了される可能性があります。

スリープ状態になってリクエストが機能するのを待つような同期をとるべきだと思っていますが、最初はonPauseでこれを実行できるかどうかわかりません。次に、onPauseはそれほど長くはかからないはずです。ネットワーク遅延がある場合、これも問題を引き起こす可能性があります。

状態をリモートサーバーにフラッシュする必要がある場合、または一般に別のスレッドを必要とする何らかの方法で状態をonPauseに保存するための推奨される方法はありますか?

4

2 に答える 2

2

状態をリモートサーバーにフラッシュする必要がある場合に、onPauseに状態を保存するための推奨される方法:

OnPauseでサービス(Androidサービス)を開始し、そのサービスからサーバーに状態をフラッシュし、目的のタスクの完了後にサービスを閉じます。

于 2013-02-10T16:56:17.687 に答える
2

あなたが何をしているのか完全にはわかりませんが、

HttpRequest をServiceに入れることができます。ここから Thread を生成すると、アクティビティが onPause にヒットしても、これは強制終了されません。

その後、 BroadcastRecieverを使用してアプリにコールバックできます。アクティビティがまだ開始されていない場合は、アクティビティが開始されます。

于 2013-02-10T16:54:54.017 に答える