私のアプリケーションでは、サーバー通信を頻繁に使用していますが、取引は次のようになります。
最初に、一意の ID を取得するためにサーバーを呼び出す必要があります (またはJava でGUID
呼び出されると思います)。UUID
その後、受信したIDを操作で送信する必要がある間、サーバーで他の操作を実行できます。問題は、このセッションが 5 分間のみ有効で、その後サーバーから新しい ID を取得する必要があることです。
したがって、ユーザーがアプリケーションを終了してアクティブでなかった場合は、ログイン画面に戻して再度認証し、アプリケーションに戻ったときにサーバーから新しい一意の ID を受け取るためにonResume
、すべてのメソッドをオーバーライドします。私のActivities
:
ユーザーが 5 分間アクティブでない場合にログイン アクティビティを開始する方法:
質問:しかし、ユーザーがアプリケーションを 5 分間使用し、その間サーバーに呼び出しを行わなかった場合、ID が無効になり、次のサーバーへの呼び出しで id 無効メッセージが返された場合はどうなるでしょうか。
したがって、次のようなことを行うことができます(疑似コード):
class SessionInvalidAwareMethod(AsyncTask task)
{
AsyncTask currentAsyncTask = task;
AsyncTask authenticateAsyncTask;
public SomeResult executeTask()
{
result = executeCurrentAsyncTask();
if (result = sessionInvalid)
{
executeAuthenticationTask()
result = executeCurrentAsyncTask();
}
return result;
}
}
問題:しかし、サーバーへの呼び出しとセッション無効メッセージの取得を回避したいと考えています。そのため、サーバーからIDを最後に取得したときに保持するアプリケーションクラスにDateパラメーターを保持します。どのくらいの時間が経過したかに応じて、現在のものをAsyncTask
実行するか、authenticateAsyncTask
最初のものを実行し、それが終了してから現在のものを実行する必要があるかを決定するにはどうすればよいですかAsyncTask
( My problem is to do the second step in a synchronous way
)?
この種の状況を全体的に処理する正しい方法は何ですか?
助けてくれた友達に感謝します。