欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

详解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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!