在我的应用我的工作有很多与服务器的通信和处理是这样的:我如何妥善处理服务器通讯在Android的:
首先要拨打电话到服务器,以获得一个唯一的ID( GUID
,或者我认为它在java中被称为UUID
)。之后我可以在服务器上执行其他操作,而我必须通过操作发送收到的ID。问题是这个会话只有5分钟的非活动状态有效,之后我需要从服务器获取一个新的Id。
因此,如果用户退出应用程序,并且没有激活,那么我只是将他发回到登录屏幕以再次进行身份验证,并在他重新登录到我的应用程序时从服务器接收新的唯一ID onResume
方法在我所有的Activities
的:
How to start Login Activity if user wasn't active for 5 minutes:
问题:但是,如果使用5分钟,就在这个时候,他从来没有向服务器的任何调用应用程序的用户,他的身份证无效什么接下来他对服务器的调用返回id无效消息。
所以我可以做这样的(伪代码)的一些事情:
class SessionInvalidAwareMethod(AsyncTask task)
{
AsyncTask currentAsyncTask = task;
AsyncTask authenticateAsyncTask;
public SomeResult executeTask()
{
result = executeCurrentAsyncTask();
if (result = sessionInvalid)
{
executeAuthenticationTask()
result = executeCurrentAsyncTask();
}
return result;
}
}
问题:但我想避免调用服务器和获取会话无效消息。 所以我在我的应用程序类中保存Date参数,这个参数最后一次从服务器上离开我的ID。我怎么能用它来决定取决于已经过了多少时间,如果我应该先运行当前的AsyncTask
或运行authenticateAsyncTask
,并且只有在完成后我才应该运行当前的AsyncTask
(My problem is to do the second step in a synchronous way
)?
有人可以向我解释什么是正确处理这种情况的正确方法?
感谢您的帮助朋友。
实际上,我无法控制服务器端如何实现,必须根据我目前的工作情况进行工作。我想这是你必须与Itay进行的讨论。你想让我告诉他这个? –
当然,但在工作时间:) –
赫:)会做。 –