我正在构建一个Android应用程序,该应用程序应该:
显示一些数据,这些数据是从Internet上的服务器加载的。
目前,我SQliteDB
在应用程序中使用了本地存储数据的地方,应该将其显示出来。我之所以使用它,是因为即使暂时没有可用的互联网连接,我也希望能够显示数据。
下一步,我将SQliteDB
通过Internet服务器将数据插入本地。我考虑过这样做:
应用启动时,请检查互联网是否可用。如果是,请连接到Web服务(包括用户名和密码)。网络服务应通过json对象将必要的数据传递到应用程序,然后我将更新本地SQlite数据库。
我的问题:
这是个好主意吗?
有没有更好的方法可以做到这一点?
Zend网站也可以查看(和编辑)数据。
提前致谢。
最好的问候丹尼尔
您所说的方式似乎是最佳的。也许您应该设置一个与时间或日期相关的标志或警报。以防应用程序启动太多次而没有互联网。
>>要更新您的移动应用程序,应考虑在服务器和应用程序上拥有相同数据的优先级/紧迫性。
>为了更好地做到这一点,您可以选择更适合您需求的方式。
要在一个线程中获取数据并在另一个线程中呈现,
1.编写自定义Asynctasks
:
http : //developer.android.com/reference/android/os/AsyncTask.html
AsyncTask Android示例
要么
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
Java“ for each”循环如何工作?
现在开始保存数据:
>>这在很大程度上取决于服务器中的数据是什么以及您要存储多少数据。
在Android存储选项中:http :
//developer.android.com/guide/topics/data/data-storage.html
一个。有共享首选项:
这些选项非常适合保存/存储数据,这些数据的大小相对较小,并且可能会被覆盖和频繁获取。例如。用户名,当前用户的详细信息,密码
http://developer.android.com/reference/android/content/SharedPreferences.html
如何在Android中使用SharedPreferences来存储,获取和编辑值
b。维护数据库对于您的应用程序所需的更大块很有用。
您可以根据需要存储,更新或覆盖数据。可以有多个表,或者可以在各个字段中存储更多数据。
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
http://www.vogella.com/tutorials/AndroidSQLite/article.html
在使用时Gson
,您还可以选择填充模型类的对象,然后将该响应存储在using方法String
中SharedPreferences
(取决于长度/大小,可能在中)gsonToJson
。我已经用过了,厚脸皮但是有效。
您还需要考虑其他有关UI和内存优化ListViews
或布局等内容,具体取决于您的应用及其控制流程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句