サーバーから認証用のトークンを取得し、それをサーバーへのさらなるクエリに使用するAndroidプロジェクトがあります。トークンは約10分で期限切れになるため、新しいトークンを取得する必要があります。私の現在のパターンは次のようなものです。
1-ユーザーが最初にアプリケーションを起動したときにトークンを取得します
2-「お待ちください」ダイアログでユーザー入力をブロックして、他のアクティビティからnullトークンを使用してクエリを送信しようとしないようにします
3-トークンとタイムスタンプを保存し、ユーザー入力のブロックを停止します
4-onCreate()
アクティビティのメソッドでタイムスタンプを定期的に確認します
5-必要に応じて更新します。
私の問題はこれです。ユーザーがアクティビティを開き、トークンの有効期限が切れた場合、アプリケーションは再びユーザー入力をブロックし、トークンをフェッチしようとします。ただし、バックグラウンドでは、アプリケーションの通常のロジック/フローが続行され、古いトークンまたはnullトークンを使用してサーバーにクエリを送信しようとします。
したがって、このクエリタスク(AsyncTask
トークンのフェッチに似ています)をブロックし、トークンのフェッチが終了した後に開始します。このパターンをどのように使用できますか?これは正しいパターンですか?
あるスレッドを別のスレッドが終了するのを待たせますか?