2012-04-12 23 views
1

OK、私はこの問題を少しずつ研究しており、良い答えは見つかりませんでした。私はWebサービスを介して私のdbへの更新があるかどうかをチェックするasynctaskを持っています。私は、私のアプリでユーザーセッションごとに1回チェックしたい(今はメイン画面に戻るたびにチェックする)。だから私は、アプリケーションを終了し、プロセスが停止し、彼らは再びそれを開いて再びWebサービスをチェックします。Android:セッションごとに1回asynctaskを実行してください

共有設定を使用していると読んだことがありますが、これまでアプリを初めて実行したときのみ考えています。

自分の共有設定にタイムスタンプを保存し、最後のタイムスタンプから30分以上経過しているかどうかを確認しました。しかし、それは私が必要とするもののために複雑に思えます。

答えて

3

共有設定は、実際にはまっすぐです。変数を共有設定にすることができます。たとえば "0"の場合非同期を開始すると、その値は "1"に変わります。したがって、asyncは決して実行されません。終了するときは、共有設定を "0"に戻してください。次回ユーザーがプログラムを起動すると、asyncTaskが実行され、値を再び「1」に戻します。メイン画面に戻ると、asynは実行されません。これはあなたが探しているものですか?

+0

種類は、どうすれば私のアプリが終了するのを確認できますか? –

+0

sharedPrefを目的の値に設定し、finish()を実行します。 'http://developer.android.com/reference/android/app/Activity.html' – Hexark

+0

OK、それは最終的に意味があります。私はアンドロイドのonDestroy()メソッドをオーバーライドすることができないことを認識していませんでした。したがって、私のオーバーライドされたonDestroyでは、共有プレフを0に戻すことができます。それは簡単な質問だったと思います。しかし時には、あなたが欠けていたものを理解するのを助ける人が必要な場合もあります。 –

2

OK、私は実際に私が仕事を受け入れた解決策を作ることはできませんでした。これは理にかなっていますが、同じ画面に戻るたびにfinish()メソッドが呼び出されます。その結果、メイン画面に戻るたびにアップデートを確認していました。これは私が避けようとしていたものです。最後に、私はUNIX時間でタイムスタンプを保存してしまい、最後にアップデートを確認してから15分かどうか確認しました。それは素晴らしい仕事でした。

+0

トリガーするときにfinish()を呼び出すだけでよい。ユーザーが出口などを押したときのように。更新を確認した直後に共有プレファイルが「チェック済み」に設定されます。ボタンをトリガするときは、「未チェック」に戻して終了します。 – Hexark

関連する問題