在我的應用我的工作有很多與服務器的通信和處理是這樣的:我如何妥善處理服務器通訊在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進行的討論。你想讓我告訴他這個? –
當然,但在工作時間:) –
赫:)會做。 –