详解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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!