详解Android的网络数据存储
程序员文章站
2024-02-26 10:18:22
一、网络保存数据介绍
可以使用网络来保存数据,在需要的时候从网络上获取数据,进而显示在app中。
用网络保存数据的方法有很多种,对于不同的网络数据采用不同的上传与获取方...
一、网络保存数据介绍
可以使用网络来保存数据,在需要的时候从网络上获取数据,进而显示在app中。
用网络保存数据的方法有很多种,对于不同的网络数据采用不同的上传与获取方法。
本文利用leancloud来进行网络数据的存储。
leancloud是一种简单高效的数据和文件存储服务。感兴趣的可以查看网址:。关于leancloud的数据存储使用方法可以在里面找到,本文不讲述关于leancloud的使用,知识借助leancloud平台举一个在网络上存储数据的例子。
二、使用方法
1.上传数据
avobject personobject = new avobject(tablename); personobject.put(name, person.name); personobject.put(age, person.age); personobject.put(info, person.info); personobject.saveinbackground(new savecallback() { @override public void done(avexception e) { if (e == null) { log.v(tag, "put data success!"); } else { log.v(tag, "put data failed!error:" + e.getmessage()); } } });
2. 读取数据
avquery<avobject> avquery = new avquery<>(tablename); avquery.findinbackground(new findcallback<avobject>() { @override public void done(list<avobject> list, avexception e) { if (e == null) { log.v(tag, "get data success!"); string message = ""; for (int i = 0; i < list.size(); i++) { string name = list.get(i).getstring(name); int age = list.get(i).getint(age); string info = list.get(i).getstring(info); message += "name:" + name + ",age:" + age + ",info:" + info + ".\n"; } textview.settext(message); } } });
三、小案例
1.添加strings.xml文件
<string name="network">network</string> <string name="get_data">获取数据</string> <string name="put_data">上传数据</string>
2.修改activity_main.xml文件
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.coordinatorlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitssystemwindows="true" tools:context="com.zhangmiao.datastoragedemo.mainactivity"> <linearlayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="@string/network" /> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginbottom="@dimen/fab_margin" android:layout_margintop="@dimen/fab_margin" android:orientation="horizontal"> <button android:id="@+id/network_put" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/put_data" /> <button android:id="@+id/network_get" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/get_data" /> </linearlayout> <textview android:id="@+id/table_info" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/app_name" /> </linearlayout> </android.support.design.widget.coordinatorlayout>
3.添加networkdbmanager类
package com.zhangmiao.datastoragedemo; import android.util.log; import android.widget.textview; import com.avos.avoscloud.avexception; import com.avos.avoscloud.avobject; import com.avos.avoscloud.avquery; import com.avos.avoscloud.findcallback; import com.avos.avoscloud.savecallback; import java.util.list; /** * created by zhangmiao on 2016/12/22. */ public class networkdbmanager { private static final string tag = "networkdbmanager"; private final static string tablename = "person"; private final static string name = "name"; private final static string age = "age"; private final static string info = "info"; public void putdata(person person) { avobject personobject = new avobject(tablename); personobject.put(name, person.name); personobject.put(age, person.age); personobject.put(info, person.info); personobject.saveinbackground(new savecallback() { @override public void done(avexception e) { if (e == null) { log.v(tag, "put data success!"); } else { log.v(tag, "put data failed!error:" + e.getmessage()); } } }); } public void getdata(final textview textview) { avquery<avobject> avquery = new avquery<>(tablename); avquery.findinbackground(new findcallback<avobject>() { @override public void done(list<avobject> list, avexception e) { if (e == null) { log.v(tag, "get data success!"); string message = ""; for (int i = 0; i < list.size(); i++) { string name = list.get(i).getstring(name); int age = list.get(i).getint(age); string info = list.get(i).getstring(info); message += "name:" + name + ",age:" + age + ",info:" + info + ".\n"; } textview.settext(message); } } }); } }
4.修改androidmanifest.xml文件
<uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.access_network_state"/>
5.修改mainactivity
package com.zhangmiao.datastoragedemo; import android.content.contentresolver; import android.content.contentvalues; import android.database.cursor; import android.net.*; import android.os.bundle; import android.support.v7.app.appcompatactivity; import android.util.log; import android.view.view; import android.widget.button; import android.widget.textview; import com.avos.avoscloud.avoscloud; import java.util.arraylist; import java.util.list; public class mainactivity extends appcompatactivity implements view.onclicklistener {private networkdbmanager mnetworkdbmanager; private textview mtableinfo; @override protected void oncreate(bundle savedinstancestate) { log.v("mainactivity", "oncreate"); super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); avoscloud.initialize(this, "ymnuazdbt872mntc9asakjyy-gzgzohsz", "d4vw3vydmcjlpsxrhhtbrutc"); mnetworkdbmanager = new networkdbmanager(); button networkget = (button) findviewbyid(r.id.network_get); button networkput = (button) findviewbyid(r.id.network_put); mtableinfo = (textview) findviewbyid(r.id.table_info); networkget.setonclicklistener(this); networkput.setonclicklistener(this); } @override public void onclick(view v) { switch (v.getid()) {case r.id.network_put: person person3 = new person("xiao", 23, "women"); person person4 = new person("zhao", 24, "men"); mnetworkdbmanager.putdata(person3); mnetworkdbmanager.putdata(person4); break; case r.id.network_get: mnetworkdbmanager.getdata(mtableinfo); break; default: log.v("mainactivity", "default"); break; } } }
下载地址:http://xiazai.jb51.net/201612/yuanma/datastoragedemo-master_jb51.rar
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
上一篇: Android中微信小程序开发之弹出菜单
下一篇: Android 图片选择详解及实例代码
推荐阅读
-
详解Android的网络数据存储
-
详解Android中ViewPager的PagerTabStrip子控件的用法
-
Android App将数据写入内部存储和外部存储的示例
-
Android App中读取XML与JSON格式数据的基本方法示例
-
详解Android App中创建ViewPager组件的方法
-
详解Android App中ViewPager使用PagerAdapter的方法
-
Android App使用SQLite数据库的一些要点总结
-
详解Android中的Context抽象类
-
详解Android应用中屏幕尺寸的获取及dp和px值的转换
-
Android开发教程之ContentProvider数据存储