我正在尝试构建一个具有用户登录系统的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。有字段状态表示用户登录是否成功。如果是,则会出现数据行 –