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