我正在构建一个Android应用程序,它应该:
显示从Internet中的服务器加载的一些数据。
目前,我的应用中使用了一个本地SQliteDB
,用于存储数据,应显示该数据。我使用它,因为我希望能够显示数据,即使暂时没有可用的互联网连接。
下一步我将致力于从互联网服务器在本地SQliteDB
中插入数据。我想过这样做:
应用启动时,请检查互联网是否可用。如果是,请连接到Web服务(包括用户名和密码)。 Web服务应该通过json对象将必要的数据传递给应用程序,我将更新本地SQlite数据库。
我的问题:
这是个好主意吗?
有没有更好的方法呢?
Zend网站也可以查看(和编辑)数据。
提前致谢。
祝你好运 丹尼尔
答案 0 :(得分:2)
你说它的方式似乎是最佳的。也许你应该设置一个标志或警报,这是时间或日期相关..如果应用程序启动太多次没有互联网。
>> 对于移动应用的更新,您应该考虑在服务器和应用上拥有相同数据的优先级/紧迫性。
> 为了更好的方法,您可以选择更适合您需求的方式。
在一个线程中获取数据并在另一个线程中呈现
1。撰写自定义Asynctasks
:
http://developer.android.com/reference/android/os/AsyncTask.html
AsyncTask Android example
或
2。使用类似AsyncHttpClient的内容:http://loopj.com/android-async-http/
您可以使用onSuccess
和onFailure
方法处理响应。
选项 2。更好,如果您只想获取数据而不做任何其他事情,并对其进行处理或保存。同样,您需要先解析响应。
解析您的数据:
由于您的回复是JSON
格式,因此最好使用Gson
来映射数据和使用自定义模型类。例如:
Gson gson = new Gson();
ModelClass modelClass= new ModelClass();
modelClass= gson.fromJson(responseContent,ModelClass.class);
//where responseContent is your jsonString
Log.i("Web service response", ""+modelClass.toString());
更多信息:https://code.google.com/p/google-gson/
对于命名差异(根据webservice中的变量),可以使用注释等
@SerializedName
。
对每个循环使用a来验证/浏览/访问将作为模型类的对象/字段填充的数据:
检查这些是否有疑问:
http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html
How does the Java 'for each' loop work?
现在关于保存数据:
>> 这很大程度上取决于服务器的数据以及您要存储的数据量。
在Android存储选项中:
http://developer.android.com/guide/topics/data/data-storage.html
a。共享偏好设置:
这些对于保存/存储数据是有利的,这些数据的大小相对较小并且可以被频繁地覆盖和获取。 例如用户名,当前用户的详细信息,密码
http://developer.android.com/reference/android/content/SharedPreferences.html
How to use SharedPreferences in Android to store, fetch and edit values
b。维护数据库适用于您应用中需要的较大块。
您可以根据需要存储,更新或覆盖数据。可以存在多个表或更多数据可以存储在各个领域中
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
http://www.vogella.com/tutorials/AndroidSQLite/article.html
当您使用Gson
时,您还可以选择填充模型类的对象,然后将该响应存储在String
中(可能在SharedPreferences
中,具体取决于长度/大小)使用gsonToJson
方法。我已经习惯了,厚脸皮但有效。
您还需要考虑其他内容,包括UI和内存优化,ListViews
或布局等,具体取决于您的应用及其控制流程。
答案 1 :(得分:0)
您可以启动一个帖子并获取有关加载应用的新数据。如果你决定这条路径,我们使用Volley项目获得了很好的JSON结果。
您可以在此处查看http://www.javacodegeeks.com/2013/06/android-volley-library-example.html
并在此处获取代码 https://android.googlesource.com/platform/frameworks/volley/
答案 2 :(得分:0)
尝试使用此库: - https://github.com/Abhishekpalodath/FetchServerUtil-Android.git。 您还可以使用此功能从服务器加载实时数据。