app后台开发入门

app后台开发入门前言 由于项目需求 我负责安卓后台开发这部分内容 服务器收到安卓的请求后 返回 json 数据给安卓用 但是 我什么都不懂啊 我不知道安卓后台服务器长什么样子 我见都没见过 怎么开发 怎么照猫画虎 没有任何服务器开发的基础知识 无从下手 心中充满着万千表达不出来的疑惑和不解 别泄气 我们都一样 正文 下面列举几个问题 这样做有利于你理解服务器开发 问题创造现实问 1 后台开发和服务器开

2017/5/1第二次更新

前言:

在我写下这篇文章之前,我头脑中的app后台开发,有且只有一个流程“客户端Cilent向服务器Server请求数据,服务器Server响应客户端请求并返回json数据”。但是,仅仅用语言描述出这个流程,对开发没有任何实质性的帮助。

所以不夸张的说,对于app后天开发,我完完全全是零基础。小白小白还是小白。

我是小白,这点毋庸置疑,但是只要对一些概念有一定的了解,后台开发还是有戏的。

1: 提前做好刻苦学习的心理准备。因为后台开发的细节确实很多!


正文:

下面我罗列几个当初困扰我的问题,虽然有的现在看来不必要,但是难免其他人会问到。所以就留在那里,不打算删掉。

  • 问1:后台开发和服务器开发有什么区别和联系?
    答:对于新手,你可以认为他俩么有区别,是一个东西,区不区分清楚对你学习app后台开发没什么影响。
    这里写图片描述
    如果非要严谨点区分:
    这里写图片描述








  • 问2:http服务器,web服务器,应用服务器有什么区别?
    答:为什么叫http服务器呢?是因为该服务器支持http协议,所以这样命名。就像支持ftp协议的叫ftp服务器。web服务器是指同时支持http,https,ftp等多种协议的服务器。web服务器支持多种协议,自然要比单一的http服务器要强大。对于初学者,是否区分清楚web服务器http服务器的区别,对开发过程基本没有影响。
    注释:(http服务器==web服务器)
    这里写图片描述
    更多web(http)服务器与应用服务器的关系








  • 问3:web后台开发和手机app后台开发(也就是服务器开发)有什么区别?
    答:不严谨的说,web后台开发和app后台开发有区别,但区别不大。
    这里写图片描述




  • 问4:app后台怎么开发
    《App后台开发运维和架构实践》作者主页链接
    《Android 和PHP 开发最佳实践》第二版
    就我个人来说,上面两本书作用不是很大,看看就行,先别着急买。






  • 问5:app后台开发教程
    android 后台开发简单教程

  • 问6:app后台开发路线
    这里写图片描述

  • 问7:app和服务器如何通讯?
    这里写图片描述

  • 问8:api如何调调试?
    百度在线api测试平台,浏览器api测试插件。

  • 问9:app后台开发长啥样子
    答:后台开发语言有很多,这里以PHP为例,通过代码简单介绍app后台基本原理
    安卓流程





php处理请求返回json数据

这里写图片描述

php返回的json数据

{ "products": [ { "pid": "1", "name": "iPhone 4S", "price": "300.00", "created_at": "2012-04-29 02:04:02", "updated_at": "0000-00-00 00:00:00" }, { "pid": "2", "name": "Macbook Pro", "price": "600.00", "created_at": "2012-04-29 02:04:51", "updated_at": "0000-00-00 00:00:00" }, { "pid": "3", "name": "Macbook Air", "price": "800.00", "created_at": "2012-04-29 02:05:57", "updated_at": "0000-00-00 00:00:00" }, { "pid": "4", "name": "OS X Lion", "price": "100.00", "created_at": "2012-04-29 02:07:14", "updated_at": "0000-00-00 00:00:00" } ], "success": 1 }

app源码

AllProductsActivity.java public class AllProductsActivity extends ListActivity { 
      // Progress Dialog private ProgressDialog pDialog; // Creating JSON Parser object JSONParser jParser = new JSONParser(); ArrayList 
    
      > productsList; 
     // url to get all products list 
     //向服务器上的get_all_products.php发出请求,然后才能得到json数据 
     private 
     static String url_all_products = 
     "http://api.androidhive.info/android_connect/get_all_products.php"; 
     // JSON Node names 
     private 
     static 
     final String TAG_SUCCESS = 
     "success"; 
     private 
     static 
     final String TAG_PRODUCTS = 
     "products"; 
     private 
     static 
     final String TAG_PID = 
     "pid"; 
     private 
     static 
     final String TAG_NAME = 
     "name"; 
     // products JSONArray JSONArray products = 
     null; 
     @Override 
     public 
     void 
     onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); setContentView(R.layout.all_products); 
     // Hashmap for ListView productsList = 
     new ArrayList 
     
       >(); 
      // Loading products in Background Thread 
      new LoadAllProducts().execute(); 
      // Get listview ListView lv = getListView(); 
      // on seleting single product 
      // launching Edit Product Screen lv.setOnItemClickListener( 
      new OnItemClickListener() { 
      @Override 
      public 
      void 
      onItemClick(AdapterView 
       parent, View view, 
      int position, 
      long id) { 
      // getting values from selected ListItem String pid = ((TextView) view.findViewById(R.id.pid)).getText() .toString(); 
      // Starting new intent Intent in = 
      new Intent(getApplicationContext(), EditProductActivity.class); 
      // sending pid to next activity in.putExtra(TAG_PID, pid); 
      // starting new activity and expecting some response back startActivityForResult(in, 
      100); } }); } 
      // Response from Edit Product Activity 
      @Override 
      protected 
      void 
      onActivityResult( 
      int requestCode, 
      int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      // if result code 100 
      if (resultCode == 
      100) { 
      // if result code 100 is received 
      // means user edited/deleted product 
      // reload this screen again Intent intent = getIntent(); finish(); startActivity(intent); } } 
      / * Background Async Task to Load all product by making HTTP Request * */ class LoadAllProducts extends AsyncTask 
      
        { 
       / * Before starting background thread Show Progress Dialog * */ 
       @Override 
       protected 
       void 
       onPreExecute() { 
       super.onPreExecute(); pDialog = 
       new ProgressDialog(AllProductsActivity. 
       this); pDialog.setMessage( 
       "Loading products. Please wait..."); pDialog.setIndeterminate( 
       false); pDialog.setCancelable( 
       false); pDialog.show(); } 
       / * getting All products from url * */ 
       protected String 
       doInBackground(String... args) { 
       // Building Parameters List 
       
         params = 
        new ArrayList 
        
          (); 
         // getting JSON string from URL JSONObject json = jParser.makeHttpRequest(url_all_products, 
         "GET", params); 
         // Check your log cat for JSON reponse Log.d( 
         "All Products: ", json.toString()); 
         try { 
         // Checking for SUCCESS TAG 
         int success = json.getInt(TAG_SUCCESS); 
         if (success == 
         1) { 
         // products found 
         // Getting Array of Products products = json.getJSONArray(TAG_PRODUCTS); 
         // looping through All Products 
         for ( 
         int i = 
         0; i < products.length(); i++) { JSONObject c = products.getJSONObject(i); 
         // Storing each json item in variable String id = c.getString(TAG_PID); String name = c.getString(TAG_NAME); 
         // creating new HashMap HashMap 
         
           map = 
          new HashMap 
          
            (); 
           // adding each child node to HashMap key => value map.put(TAG_PID, id); map.put(TAG_NAME, name); 
           // adding HashList to ArrayList productsList.add(map); } } 
           else { 
           // no products found 
           // Launch Add New product Activity Intent i = 
           new Intent(getApplicationContext(), NewProductActivity.class); 
           // Closing all previous activities i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i); } } 
           catch (JSONException e) { e.printStackTrace(); } 
           return 
           null; } 
           / * After completing background task Dismiss the progress dialog * / 
           protected 
           void 
           onPostExecute(String file_url) { 
           // dismiss the dialog after getting all products pDialog.dismiss(); 
           // updating UI from Background Thread runOnUiThread( 
           new Runnable() { 
           public 
           void 
           run() { 
           / * Updating parsed JSON data into ListView * */ ListAdapter adapter = 
           new SimpleAdapter( AllProductsActivity. 
           this, productsList, R.layout.list_item, 
           new String[] { TAG_PID, TAG_NAME}, 
           new 
           int[] { R.id.pid, R.id.name }); 
           // updating listview setListAdapter(adapter); } }); } } } 
           
          
         
        
       
      
    
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207952.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午12:42
下一篇 2026年3月19日 下午12:43


相关推荐

  • 海思AI芯片(Hi3516DV300/CV500)开发(1.资料介绍)「建议收藏」

    海思AI芯片(Hi3516DV300/CV500)开发(1.资料介绍)「建议收藏」目录1、SVP资料介绍1.1SVP简介1.2开发框架1.3开发流程2、Hi3516DV300/CV500SDK内容介绍1、SVP资料介绍1.1SVP简介SVP(SmartVisionPlatform)是海思媒体处理芯片智能视觉异构加速平台。该平台包含了CPU、DSP、NNIE(NeuralNetworkInferenceEngine)等多个…

    2026年2月21日
    4
  • Android—Gradle教程(一)「建议收藏」

    Android—Gradle教程(一)「建议收藏」前言在前几篇中,讲解了Groovy的基础语法,学习新语法过程总是枯燥的,但为了更好的掌握Gradle,那就必须经过该过程。当然从这一篇将会从零基础开始,开展对Gradle的讲解。1.掌握Gradle基础1.1环境配置去官网下载gradle或者从本地用户文件夹下的.gradle/wrapper/dists找到本地缓存的gradle开发工具包(注意带bin文件夹的这个grade-x.x)系统属性配置:添加GRADLE_HOME:C:\Users\sheji.gradle\wrapper\

    2022年6月28日
    36
  • laravel 5.6 请教邮件中的cc,bcc是什么意思,有什么用?

    laravel 5.6 请教邮件中的cc,bcc是什么意思,有什么用?

    2021年10月24日
    85
  • whl文件安装失败解决方法

    whl文件安装失败解决方法在 cmd 命令行下安装 whl 文件 pipinstall whl 是文件名 也可以是路径 文件名 nbsp 报错 whlisnotasup 原因一 文件和 python 不匹配 文件名中 cm 后面的数字和 python 版本应该匹配 查看 python 版本 Shell ADM64importp

    2026年3月26日
    2
  • Navicat连接mysql报错 1251错误

    Navicat连接mysql报错 1251错误错误提示出现这个原因是 mysql8 之前的版本中加密规则是 mysql native password 而在 mysql8 之后 加密规则是 caching sha2 password 解决办法 把 mysql 用户登录密码加密规则还原成 mysql native password 步骤 1 打开 cmd 命令窗口 输入命令 mysql uroot p 打开 MySQL 数据库 然后输入密码进行登录 2 修改加密规则将加密方式改为 mysql native passwordALTE root

    2026年3月17日
    2
  • python最新激活码2021 4月【注册码】

    python最新激活码2021 4月【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    183

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号