我正在嘗試構建一個具有用戶登錄系統的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. Android PushNotification IntentService並調用AsyncTask函數從服務器數據庫獲取數據並更新sqlite數據庫
- 3. 從服務器獲取json數據
- 4. 如何正確保存並從數據存儲中獲取JSON?
- 5. 從php中獲取變量並在數據庫中存儲
- 6. 如何從存儲過程中獲取數據庫服務器的名稱?
- 7. 如何從jTable獲取值並存儲在數據庫中?
- 8. 在從json服務器獲取數據時獲取$ resourse服務的錯誤
- 9. 存儲數據庫服務器名稱
- 10. 如何從數據服務中抽象數據庫存儲庫?
- 11. 從Django服務獲取JSON數據
- 12. 從服務器獲取JSON函數
- 13. MVC從文本框中獲取數據並存儲在數據庫中
- 14. 使用JSON xmlHttprequest從Web服務器讀取數據庫並顯示數據?
- 15. 如何從Webhook獲取數據以存儲在數據庫中?
- 16. 當從json獲取數據並在plist中存儲時,爲plist獲得null值
- 17. AsyncTask可以在服務中運行並寫入數據庫嗎?
- 18. 程序從數據庫中獲取數據,並存儲在一個ArrayList
- 19. 如何從存儲在json中的文件中獲取數據?
- 20. 保存圖像在SQLite數據庫從web服務獲取
- 21. 連接到服務器,檢索數據,並存儲在本地數據庫
- 22. 從數據庫中獲取存儲的數據到ListView中。
- 23. 如何從服務器獲取數據並使用它更新數據庫?
- 24. PHP從數組中獲取元素存儲在mySQL數據庫
- 25. 將文件存儲在服務器上和數據庫中?
- 26. 將信息存儲在Heroku服務器上的數據庫中
- 27. 在數據庫表sql服務器中存儲特殊字符
- 28. 是否可以在Glassfish服務器中存儲SQL數據庫?
- 29. 如何從服務器獲取數據,並在sqlite的
- 30. extjs數據存儲發送到服務器(數據存儲 - > json)
一旦你解析了doInBackground中的數據,你就可以自己寫數據到數據庫了。 – Raghunandan
解析doInBackground中的JSON。將數據放入數據庫中的doInBackground中。沒有必要在這裏傳播東西。 – Knossos
@Knossos服務器並不總是發送相同的JSON。有字段狀態表示用戶登錄是否成功。如果是,則會出現數據行 –