後端的問題的确很令Android開發者煩惱,Bmob後端雲提供的解決方案不錯,加上最近要做關于後端的,先寫個Demo試下.
Bmob SDK配置
關于注冊之類的就不說了,直接去官網吧,從SDK的配置開始看.
使用工具 : Android Studio
Bmob版本 : v3.4.7
先引入Maven 倉庫,在AllProject中
allprojects {
repositories {
jcenter()
maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }
}
}
配置依賴
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
// v3.4.7隻要配置這個就可以,之前版本需要okhttp
compile 'cn.bmob.android:bmob-sdk:3.4.7-aar'
}
聲明權限
<!--允許聯網 -->
<uses-permission android:name="android.permission.INTERNET" />
<!--擷取GSM(2g)、WCDMA(聯通3g)等網絡狀态的資訊 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--擷取wifi網絡狀态的資訊 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--保持CPU 運轉,螢幕和鍵盤燈有可能是關閉的,用于檔案上傳和下載下傳 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!--擷取sd卡寫的權限,用于檔案上傳和下載下傳-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允許讀取手機狀态 用于建立BmobInstallation-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
MainActivity 中初始化Bmob
// 初始化Bomb(使用預設的方式)
Bmob.initialize(this, "887fb8cdafa392424a938a99673a2088"); // 你的App ID
還有另外一種配置方式
* 自v3.4.7版本開始,設定BmobConfig,允許設定請求逾時時間、檔案分片上傳時每片的大小、檔案的過期時間(機關為秒),*
BmobConfig config =new BmobConfig.Builder(this)
//設定appkey
.setApplicationId("Your Application ID")
//請求逾時時間(機關為秒):預設s
.setConnectTimeout()
//檔案分片上傳時每片的大小(機關位元組),預設*
.setUploadBlockSize(*)
//檔案的過期時間(機關為秒):預設s
.setFileExpiration()
.build();
Bmob.initialize(config);
建立一個JavaBean
public class Person extends BmobObject {
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
插入和查找資料
查找資料根據ObjectId進行
完整的Activity
public class MainActivity extends AppCompatActivity {
private TextView mTvState;
private TextView mTvResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTvState = (TextView) findViewById(R.id.id_tv_state);
mTvResult = (TextView) findViewById(R.id.id_tv_result);
// 初始化Bomb(使用預設的方式)
Bmob.initialize(this, "887fb8cdafa392424a938a99673a2088");
// 添加一個資料
final Person p = new Person();
p.setName("yangtr");
p.setAddress("hebust");
// 添加Person
p.save(this, new SaveListener() {
@Override
public void onSuccess() {
mTvState.setText("添加資料成功,傳回objectId為:" + p.getObjectId());
}
@Override
public void onFailure(int i, String s) {
mTvState.setText("資料添加失敗 MSG:" + s);
}
});
// 查詢操作
final BmobQuery<Person> bmob = new BmobQuery<>();
bmob.getObject(this, "76b77745d6", new GetListener<Person>() {
@Override
public void onSuccess(Person person) {
mTvResult.setText("查詢成功"+person.getName());
}
@Override
public void onFailure(int i, String s) {
mTvResult.setText("查詢失敗");
}
});
}
}
其他操作
其他操作與上面類似,使用update 更新,delete删除等,都可以通過回調方法實作相應的處理.
Bmob後端會插入資料
實作效果