我正在嘗試構建一個具有用戶登錄系統的Android應用程序,該應用程序在AsyncTask中完成。我有UserLoginTask
,它連接到Web服務器並在String中檢索服務器響應。這個字符串應該被解析成本地的SQLite數據庫,並且一些字段應該在SharedPreferences
。但是,當doInBackground()
方法完成其工作時,完成JSON的解析。問題是我應該創建另一個AsyncTask來解析JSON並使用數據庫來獲得更好的性能?如果是的話,這個AsyncTask(可以說是ParseJSONtask)應該在LoginActivity
或MainActivity
之內我應該什麼時候從LoginActivity
移動到MainActivity
。而且本地用戶數據存儲系統的最佳做法是什麼?從asynctask服務器獲取JSON並存儲在數據庫中
1
A
回答
2
您可以使用單個AsyncTask來解析JSON響應並將其存儲到數據庫中。不需要爲它創建另一個AsyncTask。當得到正確的迴應時,你應該從LoginActivity移動到MainActivity。
@Override
protected Void doInBackground(Void... params) {
// get your response
if (response != null) {
// parse your response
// store data to database
return true; // if login success
} else {
return false;
}
return false;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
if (result == true)
Intent intent = new Intent(LoginActivity .this, MainActivity.class);
startActivity(intent);
finish();
} else {
// if login failed then show meesage or do your stuff here
}
}
-1
一個好方法是使用改造(http://square.github.io/retrofit/)。
如果你想只使用Android上,doInBackground,你可以把JSON和在這個政黨成員解析它給OBJ像(http://www.androidhive.info/2012/01/android-json-parsing-tutorial/)
-1
我想你可以建立自己的邏輯,這樣你做下載,解析並保存在同一個AsyncTask中。如果你真的需要,你當然可以啓動另一個AsyncTask。除了你的代碼變得混亂之外,這種方法沒有什麼問題。
-1
- 您只能使用一個AsyncTask解析數據,然後逐個存儲數據。
- 您可以有一個AsyncTask進行解析,當解析完成後,它會調用一個回調函數啓動另一個AsyncTask來處理數據庫。 (注意:你可以在一個並行執行器上啓動它,這會更快,因爲存儲將與解析並行發生,在你的情況下這不需要很多時間,所以它並不重要)
- 只有一個AsyncTask首先調用Volley來獲取數據,然後解析並存儲。
相關問題
- 1. 從服務器獲取數據並存儲在iPhone中
- 2. 從JSON服務器獲取數據並自動存儲在sqlite中
- 3. Android PushNotification IntentService並調用AsyncTask函數從服務器數據庫獲取數據並更新sqlite數據庫
- 4. 在服務器上存儲JSON數據
- 5. 從服務器獲取json數據
- 6. 自動從服務器存儲獲取數據,然後上傳到數據庫
- 7. 如何正確保存並從數據存儲中獲取JSON?
- 8. 從php中獲取變量並在數據庫中存儲
- 9. 如何從存儲過程中獲取數據庫服務器的名稱?
- 10. 如何從jTable獲取值並存儲在數據庫中?
- 11. 在從json服務器獲取數據時獲取$ resourse服務的錯誤
- 12. 存儲數據庫服務器名稱
- 13. 從ul li div獲取數據並存儲到json中
- 14. 如何從數據服務中抽象數據庫存儲庫?
- 15. 從服務器中的數據庫獲取數據
- 16. 如何從表中獲取數據,如果表存儲在ios服務器中的數據庫中。
- 17. 提取數據並在服務器上填充redux存儲
- 18. 從Django服務獲取JSON數據
- 19. 從Json服務器獲取數組?
- 20. 從服務器獲取JSON函數
- 21. 從Web服務獲取數據並將其存儲在數組列表
- 22. 是否可以從HTML5的本地存儲中提取數據並保存到服務器數據庫?
- 23. Android在服務器中存儲數據
- 24. 如何從MySQL中獲取數據並存儲在Sqlite數據庫中android
- 25. MVC從文本框中獲取數據並存儲在數據庫中
- 26. 使用JSON xmlHttprequest從Web服務器讀取數據庫並顯示數據?
- 27. 通過存儲從JSON數組中獲取JSON響應數據
- 28. 如何從Webhook獲取數據以存儲在數據庫中?
- 29. RuntimeException嘗試將使用Asynctask從服務器獲取的值存儲到sharedpreferences
- 30. 當從json獲取數據並在plist中存儲時,爲plist獲得null值
一旦你解析了doInBackground中的數據,你就可以自己寫數據到數據庫了。 – Raghunandan
解析doInBackground中的JSON。將數據放入數據庫中的doInBackground中。沒有必要在這裏傳播東西。 – Knossos
@Knossos服務器並不總是發送相同的JSON。有字段狀態表示用戶登錄是否成功。如果是,則會出現數據行 –