logo
当前位置:首 页 > 移动开发 >android > 查看文章

作者:ithuangqing

http://blog.csdn.net/sinat_33921105

开始

如何轻松搭建一个服务器端,制作一款属于自己的app呢?今天我们来一起学习一下!首先我们先来看看它——Bmob。

Bmob 是一个可以开发云存储的移动应用软件,给应用软件快速添加一个安全灵活的后台管理系统,方便浏览终端保存的各种信息。针对移动应用开发的特性,Bmob还提供了主动推送服务,可以让移动开发者将信息从服务器直接推送到应用程序中,从而实现软件的主动更新、信息通知等服务。

对于很多Android/iOS个人移动开发者来说,开发一个具有网络功能的应用不是一件容易的事,不仅需要购买/租赁服务器,还必须掌握一门诸如Java/.net/php这类的服务器开发语言,每开发一款移动应用程序,就必须开发维护对应的服务器程序。这一切对于移动开发者来说,都是一个冗长的噩梦。

如何让移动开发者从繁琐的机械劳动中解脱出来,将更多精力投入到移动应用程序的创意研发,从而不断提升产品质量呢?Bmob移动应用云存储平台的诞生就很好地解决了以上难题。

在Bmob平台上,只需注册一个帐号,成功后申请创建任意多个数据库,获得对应的Key,下载对应版本的SDK并将其嵌入到移动应用中,便可以调用存取API,进行数据的任意操作。有了Bmob,您在5分钟内就可以学会如何开发一个云存储的移动应用软件,给应用软件快速添加一个安全灵活的后台管理系统,方便您浏览终端保存的各种信息。

是不是很心动啊,废话不多说,我们直接开始吧!

创建应用

首先你需要注册一个Bmob账号,注册成功之后页面是这样的:

你的应该是空白的,点击创建应用:

按操作进行即可,这里我们选择开发版免费的。当你创建完应用,点击所创建的应用:

你的应该只有一个数据表_User,我这里已经创建了两个数据表,我们先打开设置看一个非常重要的东西:

这个ID一定要注意,很重要,我们继续。页面右下角有一个文档,我们点开找到Android开发文档:

你可以快速浏览一下这里的快速入门,接下来我们开始导入sdk,首先说明一点我们使用Android Studio来完成开发工作,在快速入门中你会看到导入sdk的方法,我们优先选择自动导入。

自动导入

在 Project 的 build.gradle 文件中添加 Bomb 的 maven 仓库地址:


 buildscript { 
     repositories { 
         jcenter() 
     } 
     dependencies { 
         classpath     'com.android.tools.build:gradle:1.2.3' 
     } 
 } 

 allprojects { 
     repositories { 
         jcenter() 
         //Bmob的maven仓库地址--必填 
         maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" } 
     } 
 }

按照文档说明来即可。接着配置AndroidManifest.xml,最后一步比较重要的是就是初始化BmobSDK了。

初始化BombSDK

在你的应用程序启动的 Activity 的 onCreate方法中初始化BombSDK:

package com.bmob.example; 
import cn.bmob.v3.Bmob; 
import android.app.Activity; 
import android.os.Bundle; 
public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
         // TODO Auto-generated method stub 
        super.onCreate(savedInstanceState); 
         //提供以下两种方式进行初始化操作: 

        //第一:默认初始化 
        Bmob.initialize(this, "Your Application ID"); 
        // 注:自v3.5.2开始,数据sdk内部缝合了统计sdk,开发者无需额外集成,传渠道参数即可,不传默认没开启数据统计功能 
        //Bmob.initialize(this, "Your Application ID","bmob"); 

        //第二:自v3.4.7版本开始,设置BmobConfig,允许设置请求超时时间、文件分片上传时每片的大小、文件的过期时间(单位为秒), 
        //BmobConfig config =new BmobConfig.Builder(this) 
        ////设置appkey 
        //.setApplicationId("Your Application ID") 
        ////请求超时时间(单位为秒):默认15s 
        //.setConnectTimeout(30) 
        ////文件分片上传时每片的大小(单位字节),默认512*1024 
        //.setUploadBlockSize(1024*1024) 
        ////文件的过期时间(单位为秒):默认1800s 
        //.setFileExpiration(2500) 
        //.build(); 
        //Bmob.initialize(config); 
    } 
}

当你初始化完成并且上述步骤都无误的情况下你就能使用bmob啦,我们来验证一下:

当你随便在一个java类文件中写上bmob的时候就会出现很多bmob的相关方法了,至此配置bmob已经全部完成,接下来开始使用bmob吧!

创建数据表

我觉得bmob的一个核心就是数据的使用,就是上传数据,读取数据,也注重说一下这点,首先我们创建一个自己需要的数据表:

public class FoundData extends BmobObject {
    private String title;    
    private String describe;    
    private String phone;    
    
    public void setPhone(String phone) {
        this.phone = phone;
    }    
        
    public void setDescribe(String describe) {
        this.describe = describe;
    }    
        
    public void setTitle(String title) {
        this.title = title;
    }    
    
    public String getPhone() {        
        return phone;
    }    
    
    public String getDescribe() {        
        return describe;
    }    
    
    public String getTitle() {        
        return title;
    }
}

这里我根据项目需要创建了一个FoundData数据表,我们创建数据表的时候记住要继承自Bmobject这个类,然后定义相关属性,添加set与get方法,在我们的项目中成功创建数据表之后我们需要在bmob后端控制太添加数据表与之形成对应:

选择添加表:

这里选择自定义,要注意这里的名称必须与你在项目里创建的数据表名称一模一样,添加表完成之后打开这个表:

因为你是刚创建的所以你的里面只有objectid String这一样,你需要手动添加,我们选择添加列:

注意列的名称也必须与你项目中创建的变量名称一致,包括数据类型:

完成上述操作我们就成功创建一个数据表了,接下来我们重点说一下对数据的读取,首先我们需要在数据表中添加相关数据,像这样:

记住添加数据的时候是添加行。然后我们打开开发文档:

点开开发文档:

这是关于bmob对于android开发的一系列操作,我们需要找到查询数据的方法:

找到查询指定列

这里给我们提供一个查询指定列的方法,我们看在项目中的具体使用:

    //获取数据  
    public void getData(){  

        //获取数据  
        BmobQuery<FoundData> bmobQuery = new BmobQuery<FoundData>();  
        //不指定查找具体的哪一项则为查找全部数据  
        // bmobQuery.addQueryKeys("title");  
        bmobQuery.findObjects(new FindListener<FoundData>() {  
            @Override  
            public void done(List<FoundData> list, BmobException e) {  

            }  
        });  


    }

我们需要注意,bmob提供的是查询指定列的方法,就是它可以得到一列的数据,但是我们知道我们的数据并不是只有一列数据,如果我们想查询所有数据该怎么办呢?很简单我们将查询指定列的那段代码去掉就可以查询全部数据了,注意看我代码的注释。

我一直觉得对于查询得到的数据的处理是一个难点,当你做好了app的界面,再加入网络功能可以读取后台数据,基本上一个简单的app就成了,接下来我们就说说如何处理得到的数据:

//获取数据 
public void getData(){ 

    //获取数据 
    BmobQuery<FoundData> bmobQuery = new BmobQuery<FoundData>(); 
    //不指定查找具体的哪一项则为查找全部数据 
    // bmobQuery.addQueryKeys("title"); 
    bmobQuery.findObjects(new FindListener<FoundData>() { 
        @Override 
        public void done(List<FoundData> list, BmobException e) { 
        Toast.makeText(getContext(),"刷新成功"+list.size(),Toast.LENGTH_SHORT).show(); 

        /** 
        * 1.list为得到的数据源 
        * 2.得到的数据有三项 
        *  2.1 title 
        *  2.2 phone 
        *  2.3 describe 
        */ 
        //处理list中的数据,for循环遍历 
        for(FoundData data : list){ 
            mHashMap = new HashMap<>(); 
            mHashMap.put("title",data.getTitle()); 
            mHashMap.put("phone",data.getPhone()); 
            mHashMap.put("describe",data.getDescribe()); 
           } 
         List<Map<String,String>> mapList = new ArrayList<>(); 
         mapList.add(mHashMap); 
         simpleAdapter = new SimpleAdapter(getContext(),mapList,R.layout.list_item,new String[]{"title","phone","describe"},new int[]{R.id.lf_title,R.id.lf_phone,R.id.lf_describe}); 
         //数据布局填充adapter,即是绑定数据 
         listView.setAdapter(simpleAdapter); 
         simpleAdapter.notifyDataSetChanged(); 
      } 
  }); 
}

我们要清楚的知道得到的数据是什么,这里是一个list集合,集合中的数据是FoundData对象,并且含有三项数据,看注释,得到的数据是要给用户看的,我们一般选在listview,处理数据的一个标准还是要看我们选择的适配器,这里我选择使用simpleAdapter,如果选择使用了simpleAdapter我们就需要一个数据源,这个数据源是一个list集合,但是集合中的每一个数据又都是一个map集合,因此我们就需要将得到的list转化成simpleAdapter需要的数据源,这里我们处理的逻辑是先使用hashmap接收得到的list,再将其转化成数据元素是map集合的list,注意看代码实现。运行过上述代码的可能会发现,上述代码的实现似乎有点问题,当我们在多添加一行数据的时候发现读取到的数据却只有一行,这是因为使用for循环遍历的时候处理不当,修改如下:

@Override 
public void done(List<FoundData> list, BmobException e) { 
    Toast.makeText(getContext(),"刷新成功"+list.size(),Toast.LENGTH_SHORT).show(); 
    List<Map<String,String>> mapList = new ArrayList<>(); 
    /** 
     * 1.list为得到的数据源 
     * 2.得到的数据有三项 
     *  2.1 title 
     *  2.2 phone 
     *  2.3 describe 
     */     //处理list中的数据,for循环遍历     
    for(FoundData data : list){ 
        mHashMap = new HashMap<>(); 
        mHashMap.put("title",data.getTitle()); 
        mHashMap.put("phone",data.getPhone()); 
        mHashMap.put("describe",data.getDescribe()); 
        mapList.add(mHashMap); 
    }
}

当我们处理好以上逻辑,完成相应的界面设置我们在app上就可以看到相应的数据了:

至此大公告成,更多更详细的可以仔细阅读开发文档,bmob让你的开发更加简单快捷!

说说梦想,谈谈感悟 ,聊聊技术,有啥要说的来github留言吧 https://github.com/cjx2328

—— 陈 建鑫

陈建鑫
footer logo
未经许可请勿自行使用、转载、修改、复制、发行、出售、发表或以其它方式利用本网站之内容。站长联系:cjx2328#126.com(修改#为@)
Copyright ©ziao Studio All Rights Reserved. E-mail:cjx2328#126.com(#号改成@) 沪ICP备14052271号-3