详解Android的网络数据存储
一、网络保存数据介绍
可以使用网络来保存数据,在需要的时候从网络上获取数据,进而显示在App中。
用网络保存数据的方法有很多种,对于不同的网络数据采用不同的上传与获取方法。
本文利用LeanCloud来进行网络数据的存储。
LeanCloud是一种简单高效的数据和文件存储服务。感兴趣的可以查看网址:https://leancloud.cn/。关于LeanCloud的数据存储使用方法可以在里面找到,本文不讲述关于LeanCloud的使用,知识借助LeanCloud平台举一个在网络上存储数据的例子。
二、使用方法
1.上传数据
AVObjectpersonObject=newAVObject(TABLENAME);
personObject.put(NAME,person.name);
personObject.put(AGE,person.age);
personObject.put(INFO,person.info);
personObject.saveInBackground(newSaveCallback(){
@Override
publicvoiddone(AVExceptione){
if(e==null){
Log.v(TAG,"putdatasuccess!");
}else{
Log.v(TAG,"putdatafailed!error:"+e.getMessage());
}
}
});
2.读取数据
AVQuery<AVObject>avQuery=newAVQuery<>(TABLENAME);
avQuery.findInBackground(newFindCallback<AVObject>(){
@Override
publicvoiddone(List<AVObject>list,AVExceptione){
if(e==null){
Log.v(TAG,"getdatasuccess!");
Stringmessage="";
for(inti=0;i<list.size();i++){
Stringname=list.get(i).getString(NAME);
intage=list.get(i).getInt(AGE);
Stringinfo=list.get(i).getString(INFO);
message+="name:"+name+",age:"+age+",info:"+info+".\n";
}
textView.setText(message);
}
}
});
三、小案例
1.添加strings.xml文件
<stringname="network">Network</string> <stringname="get_data">获取数据</string> <stringname="put_data">上传数据</string>
2.修改activity_main.xml文件
<?xmlversion="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类
packagecom.zhangmiao.datastoragedemo;
importandroid.util.Log;
importandroid.widget.TextView;
importcom.avos.avoscloud.AVException;
importcom.avos.avoscloud.AVObject;
importcom.avos.avoscloud.AVQuery;
importcom.avos.avoscloud.FindCallback;
importcom.avos.avoscloud.SaveCallback;
importjava.util.List;
/**
*Createdbyzhangmiaoon2016/12/22.
*/
publicclassNetworkDBManager{
privatestaticfinalStringTAG="NetworkDBManager";
privatefinalstaticStringTABLENAME="person";
privatefinalstaticStringNAME="name";
privatefinalstaticStringAGE="age";
privatefinalstaticStringINFO="info";
publicvoidputData(Personperson){
AVObjectpersonObject=newAVObject(TABLENAME);
personObject.put(NAME,person.name);
personObject.put(AGE,person.age);
personObject.put(INFO,person.info);
personObject.saveInBackground(newSaveCallback(){
@Override
publicvoiddone(AVExceptione){
if(e==null){
Log.v(TAG,"putdatasuccess!");
}else{
Log.v(TAG,"putdatafailed!error:"+e.getMessage());
}
}
});
}
publicvoidgetData(finalTextViewtextView){
AVQuery<AVObject>avQuery=newAVQuery<>(TABLENAME);
avQuery.findInBackground(newFindCallback<AVObject>(){
@Override
publicvoiddone(List<AVObject>list,AVExceptione){
if(e==null){
Log.v(TAG,"getdatasuccess!");
Stringmessage="";
for(inti=0;i<list.size();i++){
Stringname=list.get(i).getString(NAME);
intage=list.get(i).getInt(AGE);
Stringinfo=list.get(i).getString(INFO);
message+="name:"+name+",age:"+age+",info:"+info+".\n";
}
textView.setText(message);
}
}
});
}
}
4.修改AndroidManifest.xml文件
<uses-permissionandroid:name="android.permission.INTERNET"/> <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
5.修改MainActivity
packagecom.zhangmiao.datastoragedemo;
importandroid.content.ContentResolver;
importandroid.content.ContentValues;
importandroid.database.Cursor;
importandroid.net.*;
importandroid.os.Bundle;
importandroid.support.v7.app.AppCompatActivity;
importandroid.util.Log;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.TextView;
importcom.avos.avoscloud.AVOSCloud;
importjava.util.ArrayList;
importjava.util.List;
publicclassMainActivityextendsAppCompatActivityimplementsView.OnClickListener{privateNetworkDBManagermNetworkDBManager;
privateTextViewmTableInfo;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
Log.v("MainActivity","onCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AVOSCloud.initialize(this,"yMNUazdBt872mNtC9aSakjYy-gzGzoHsz","d4vw3VYdMCjLpsXRhHTBRutC");
mNetworkDBManager=newNetworkDBManager();
ButtonnetworkGet=(Button)findViewById(R.id.network_get);
ButtonnetworkPut=(Button)findViewById(R.id.network_put);
mTableInfo=(TextView)findViewById(R.id.table_info);
networkGet.setOnClickListener(this);
networkPut.setOnClickListener(this);
}
@Override
publicvoidonClick(Viewv){
switch(v.getId()){caseR.id.network_put:
Personperson3=newPerson("xiao",23,"women");
Personperson4=newPerson("zhao",24,"men");
mNetworkDBManager.putData(person3);
mNetworkDBManager.putData(person4);
break;
caseR.id.network_get:
mNetworkDBManager.getData(mTableInfo);
break;
default:
Log.v("MainActivity","default");
break;
}
}
}
下载地址:http://xiazai.jb51.net/201612/yuanma/DataStorageDemo-master_jb51.rar
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!