首先肯定是LeanCould的官网了https://leancloud.cn
集成文档在这里https://leancloud.cn/docs
虽然网上都在吐槽他文档的垃圾.不过简单入门还是可以的
下载 SDK,将下载后的文件解压缩后的所有 jar 文件放入 Android 项目的 libs 目录。如果你们的项目没有 libs 目录,那么就在项目的根目录下创建一个,通过右键点击项目 Project,选择 New,接下来点击Folder 菜单即可创建新目录。
在 Application 的 onCreate
方法调用 AVOSCloud.initialize
来设置您应用的 Application ID 和 Key:
public void onCreate() { //如果使用美国节点,请加上这行代码 AVOSCloud.useAVCloudUS(); AVOSCloud.initialize(this, " Application ID ", "Key"); }
创建应用后,可以在 控制台 > 应用设置 里面找到应用对应的 id 和 key。
同时,你的应用需要请求 INTERNET
和 ACCESS_NETWORK_STATE
权限,如果没有设置,请添加下列两行到你的 AndroidManifest.xml
文件里的 <application>
标签前:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
如果你想跟踪统计应用的打开情况,添加下列代码到你的主 Activity
的 onCreate
方法:
AVAnalytics.trackAppOpened(getIntent());
接下来可以尝试测试一段代码,拷贝下列代码到你的 app 里,比如放到 Application.onCreate
方法:
AVObject testObject = new AVObject("TestObject"); testObject.put("foo", "bar"); testObject.saveInBackground();
运行你的 app。一个类 TestObject
的新对象将被发送到 LeanCloud 并保存下来。当你做完这一切,访问 控制台 - 数据管理 可以看到上面创建的 TestObject
的相关数据。
下面就是我自己的测试App了.也算是自己的简单入门吧
package com.example.gk.testlearncloud;
import android.app.ProgressDialog;
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 android.widget.Toast;
import com.alibaba.fastjson.JSON;
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 com.example.gk.testlearncloud.bean.ResponseItemBean;
import java.util.List;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_save;
private Button btn_query;
private TextView txt_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initEvent();
}
private Toast toast;
private void initEvent() {
btn_save.setOnClickListener(this);
btn_query.setOnClickListener(this);
toast = Toast.makeText(MainActivity.this, "", Toast.LENGTH_SHORT);
}
private void initView() {
btn_save = (Button) findViewById(R.id.btn_save);
btn_query = (Button) findViewById(R.id.btn_query);
txt_content = (TextView) findViewById(R.id.txt_content);
}
private ProgressDialog progressDialog;
/**
* 隐藏加载中的dialog
*/
private void dissmissProgressDialog() {
if (null != progressDialog && progressDialog.isShowing()) {
progressDialog.dismiss();
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_save:
progressDialog = ProgressDialog.show(MainActivity.this, "保存", "正在发疯保存中...");
createObject();
break;
case R.id.btn_query:
progressDialog = ProgressDialog.show(MainActivity.this, "查询", "正在发疯查询中...");
queryObject();
break;
}
}
public static final String TABLE_NAME = "TestObject";//表格的名称
public static int position = 10086;
/**
* 创建对象并存储数据
*/
private void createObject() {
AVObject testObject = new AVObject(TABLE_NAME);
testObject.put("foo", "bar");
testObject.put("name", "imgod");
testObject.put("sex", "男");
testObject.put("age", position++);
testObject.saveInBackground(new SaveCallback() {
@Override
public void done(AVException e) {
dissmissProgressDialog();
if (e == null) {
toast.setText("存储成功");
toast.show();
} else {
toast.setText("存储失败");
toast.show();
}
}
});
}
/**
* 查询对象
*/
private void queryObject() {
AVQuery query = new AVQuery(TABLE_NAME);
query.findInBackground(new FindCallback() {
@Override
protected void internalDone0(Object o, AVException e) {
dissmissProgressDialog();
if (e == null) {
// Success, see count variable
resolveQueryResponse(o.toString());
} else {
// Failed
Log.e("query", "error:" + e.getCode() + e.getMessage());
}
}
@Override
public void done(List list, AVException e) {
dissmissProgressDialog();
if (e == null) {
// Success, see count variable
Log.e("query", "count:" + list.size());
} else {
// Failed
Log.e("query", "error");
}
}
});
}
/**
* 解析得到的对象集合json串
*
* @param content
*/
private void resolveQueryResponse(String content) {
Log.e("resolveQueryResponse", content);
content = content.replaceAll("@type", "type");//屏蔽@type
Log.e("resolveQueryResponse", content);
List<ResponseItemBean> tempList = JSON.parseArray(content, ResponseItemBean.class);
Log.e("resolveQueryResponse", "当前服务器共有" + tempList.size() + "条数据");
toast.setText("当前服务器共有" + tempList.size() + "条数据");
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("当前服务器共有" + tempList.size() + "条数据\n");
toast.show();
for (int i = 0; i < tempList.size(); i++) {
ResponseItemBean av = tempList.get(i);
Log.e("resolveQueryResponse", "test:" + av.toString());
stringBuilder.append("position:" + i + "\t\t\t" + av.toString() + "\n");
}
txt_content.setText(stringBuilder.toString());
}
}
demo github地址: https://github.com/imgod1/TestLearnCloud