在LeanCloud官网登陆后创建应用获取ID和key。下载android sdk的几个jar包。
导入到安卓工程的libs目录下。创建一个类继承Application。重写oncreate方法,定义ID和key,并调用AVOSCloud的initialize方法,传入this、id和key。可以加上AVOSCloud的useAVCloudCN方法。
记得Application类要像四大组件一样!!需要注册。
用LeanCloud需要两个权限:
android:name="android.permission.ACCESS_NETWORK_STATE" />
android:name="android.permission.INTERNET" />
LeanCloud数据的存储:
AVObject avObject = new AVObject("test"); avObject.put("key1",key1); avObject.put("key2",key2); avObject.saveInBackground(new SaveCallback() { @Override public void done(AVException e) { if (e == null) { Toast.makeText(AddActivity.this, "数据保存成功!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(AddActivity.this, "数据保存失败!e:"+e, Toast.LENGTH_SHORT).show(); } } });new一个AVObject,传入表名。使用put方法将要存储的键值对传进来。
最后调用saveInBackground方法保存起来,传入一个回调。当异常e为空时代表数据保存成功。
LeanCloud数据的查询:
AVQuerynew一个AVQuery传入一个要查询的表名。调用findInBackground方法,传入一个find回调。avQuery = new AVQuery<>("test"); avQuery.findInBackground(new FindCallback () { @Override public void done(List list, AVException e) { ArrayList querylist = new ArrayList (); for (AVObject obj : list){ QueryItemBean item = new QueryItemBean(); item.setValue1(obj.getString("key1")); item.setValue2(obj.getString("key2")); querylist.add(item); } lv.setAdapter(new QueryListAdapter(getApplicationContext(),R.layout.query_list,querylist));
这里将查询到的数据用ListView显示出来,因为ListView需要数据源和适配器,所以创建了个bean对象里面是value1和value2的get和set方法。
创建一个ArrayList通过每次高级for循环出来的数据添加进来,最后赋给ListView展示数据。
ps:创建ListView的适配器时,继承ArrayList构造方法传入上下文、布局文件id、list数据源。
AVObject
支持以下数据类型:
boolean bool = true;
int number = 2015;
String string = number + " 年度音乐排行";
Date date = new Date();
byte[] data = "短篇小说".getBytes();
ArrayList<Object> arrayList = new ArrayList<>();
arrayList.add(number);
arrayList.add(string);
HashMap<Object, Object> hashMap = new HashMap<>();
hashMap.put("数字", number);
hashMap.put("字符串", string);
AVObject object = new AVObject("DataTypes");
object.put("testBoolean", bool);
object.put("testInteger", number);
object.put("testDate", date);
object.put("testData", data);
object.put("testArrayList", arrayList);
object.put("testHashMap", hashMap);
object.saveInBackground();
此外,HashMap 和 ArrayList 支持嵌套,这样在一个 AVObject
中就可以使用它们来储存更多的结构化数据。
我们不推荐在 AVObject
中使用 byte[]
来储存大块的二进制数据,比如图片或整个文件。每个 AVObject
的大小都不应超过 128 KB。如果需要储存更多的数据,建议使用 AVFile
。