
APP开发实战
文章平均质量分 51
介绍从零开始规划一款APP至APP上线整个过程中所涉及的产品规划和原型设计、效果图设计、切图和尺寸标注、APP 和服务器端的协作、字符编码、网络、多媒体、数据加密、设计模式、APP 架构设计、APP 的功能开发、APP 测试和项目管理等知识
xjbclz
有多年APP与手机软件开发和管理工作经验,出版了两本书:《Android APP开发实战》和《App Inventor2定制与二次开发》
展开
-
APP开发实战14-APP开发人员所需知识
4 APP开发人员所需知识APP开发人员应该掌握以下方面的相关知识:(1)Android和iOS编程语言的语法知识(2)Android和iOS的开发技能(3)设计模式(4)网络知识(5)加密知识(6)APP的性能优化(7)三方SDK的使用(8)开源代码的使用(9)多媒体知识(10)各类开发工具的使用(11)团队合作(12)系统架构(13)项目原创 2016-05-14 11:02:00 · 409 阅读 · 0 评论 -
APP开发实战15-字符编码介绍
5字符编码介绍5.1 简介5.1.1字符字符是抽象的最小文本单位。它没有固定的形状(可能是一个字形),而且没有值。“A”是一个字符,“€”(德国、法国和许多其他欧洲国家通用货币的标志)也是一个字符。“中”“国”这是两个汉字字符。字符仅仅代表一个符号,没有任何实际值的意义。5.1.2字符集字符集是字符的集合。例如,汉字字符是中国人最先发明的字符,在中文、日文、韩文和越南文原创 2016-05-14 11:03:17 · 868 阅读 · 0 评论 -
APP开发实战16-字符集和编码
5.2字符集ASCII及其扩展字符集 作用:表语英语及西欧语言。 位数:ASCII是用7位表示的,能表示128个字符;其扩展使用8位表示,表示256个字符。 范围:ASCII从00到7F,扩展从00到FF。 ISO-8859-1字符集 作用:扩展ASCII,表示西欧、希腊语等。 位数:8位, 范围:从00到FF,兼容ASCII字符集。 GB2312字符集原创 2016-05-14 11:05:17 · 1133 阅读 · 0 评论 -
APP开发实战17-如何判断字符集
5.4如何判断字符集 5.4.1字节序 首先说一下字节序对编码的影响,字节序分为Big Endian字节序和Little Endian字节序。不同的处理器可能不一样。所以,传输时需要告诉处理器当时的编码字节序。对于前者而言,高位字节存在低地址,低字节存于高地址;后者相反。例如,0X03AB,Big Endian字节序 0000: 0 3 0001: AB Littl原创 2016-05-14 11:06:06 · 348 阅读 · 0 评论 -
APP开发实战64-Activity数据传递机制
16.4.2数据传递机制(1)使用Activity系统函数传递数据(2)使用自定义接口函数传递数据(3)使用广播消息传递数据示例代码如下:publicstatic void registerApiListener(Context context, BroadcastReceiver receiver,String actionId) { LocalBroadca原创 2016-06-25 18:04:05 · 341 阅读 · 0 评论 -
APP开发实战63-Activity数据传递媒介
16.4Activity数据传递16.4.1数据传递媒介16.4.1.1 通过Intent传递数据(1)直接传递---intent.putExtra(key,value)(2)通过bundle---intent.putExtras(bundle)这两种方式都要求传递的对象必须可序列化(Parcelable或Serializable),且通过intent传递数据是有大小限制的,最转载 2016-06-25 17:55:34 · 347 阅读 · 0 评论 -
APP开发实战62-Activity数据保存和恢复
16.3Activity数据保存和恢复16.3.1利用onSaveInstanceState和onRestoreInstanceState函数(1)onCreate(Bundle savedInstanceState) 方法Activity创建时回调:该方法会自动传入一个Bundle 对象, 该 Bundle 对象就是上次被系统销毁时在 onSaveInstanceState中保存的数原创 2016-06-25 17:53:56 · 429 阅读 · 0 评论 -
APP开发实战61-Activity消息路由
16.2Activity消息路由在Android开发中,常遇到多个Activity间的相互通信和调用,这样会导致Acticity间的横向依赖。 (转自:http://sixwolf.net/blog/2016/03/23/Android%E8%B7%AF%E7%94%B1%E6%A1%86%E6%9E%B6%E8%AE%BE%E8%AE%A1/) Android中,打开页面转载 2016-06-25 17:50:05 · 1240 阅读 · 0 评论 -
APP开发实战5-APP产品和设计人员的工作
(34)在许多APP,尤其是电商APP中,会在购物车、订单或消息图标的右上角设计一个数字角标,显示购物车中的商品数量、订单个数或消息个数。通常会把角标区域设计成圆形,如果数量不到100时,可以正常显示,超过100,变成3位或4位数时,往往就显示不下了。解决方案:A数字超过100时,显示99+。B 改变角标区域的形状。 (35)大多数APP中的许多功能需要在登录状态才能正常使用,原创 2016-05-08 15:18:03 · 1760 阅读 · 0 评论 -
APP开发实战65-应用级别的BaseActivity设计
16.5BaseActivity设计BaseActivity主要是定义一些公共的行为,或各Activity都可能会用到的函数,可以包括以下内容:(1)如果APP只支持竖屏,可以在BaseActivity设置好,这样不用每个Activity都需要自己设置。(2)记录各个生命周期函数的Log。(3)在创建Activity时,基本都需要做以下三件事:初始化变量、初始化View和获取数据,原创 2016-06-25 18:10:25 · 431 阅读 · 0 评论 -
APP开发实战67-Service类型
17 Service介绍(转自:http://www.tuicool.com/articles/iu22QnF)服务是一个应用程序组件,可以在后台执行长时间运行的操作,不提供用户界面。此外,一个组件可以绑定到一个服务与它交互,甚至执行进程间通信(IPC)。例如,一个服务可能处理网络通信、播放音乐、执行文件I/O,或与一个内容提供者交互,都在后台执行。17.1Service类型(1)转载 2016-06-26 15:50:00 · 355 阅读 · 0 评论 -
APP开发实战68-IntentService
17.3 IntentService实现服务有两种方式:继承 Service 或者 IntentService ,后者是前者的子类。IntentService 将用户的请求执行在一个子线程中,用户只需覆写onHandleIntent函数,并在改函数中完成自己的耗时操作即可。在执行完毕后,IntentService 会调用stopSelf自我销毁。如果没有特别需求,继承 IntentServic转载 2016-06-26 15:53:29 · 283 阅读 · 0 评论 -
APP开发实战69-前台服务
17.4前台服务前台服务是被认为是用户已知的正在运行的服务,当系统需要释放内存时不会优先杀掉该进程。前台进程必须发一个 notification 在状态栏中显示,直到进程被杀死。因为前台服务会一直消耗一部分资源,但不像一般服务那样会在需要的时候被杀掉,所以为了能节约资源,保护电池寿命,一定要在建前台服务的时候发notification ,提示用户。当然,系统提供的方法就是必须有 notif转载 2016-06-26 15:54:29 · 457 阅读 · 0 评论 -
APP开发实战70-服务的生命周期
17.5服务的生命周期启动的服务: startService()->onCreate()->onStartCommand()->running->stopService()/stopSelf()->onDestroy()->stopped 其中,服务未运行时会调用一次onCreate(),运行时不调用。绑定的服务: bindService()->onCreate()->onBi转载 2016-06-26 15:56:13 · 301 阅读 · 0 评论 -
APP开发实战71-服务不被杀死
17.6服务不被杀死服务不被杀死分3种来讨论:(1) 系统根据资源分配情况杀死服务 用户不干预,完全靠系统来控制,办法有很多。比如 onStartCommand() 方法的返回值设为 START_STICKY ,服务就会在资源紧张的时候被杀掉,然后在资源足够的时候再恢复。当然也可设置为前台服务,使其有高的优先级,在资源紧张的时候也不会被杀掉。 (2) 用户通过 s转载 2016-06-26 15:57:21 · 331 阅读 · 0 评论 -
APP开发实战72-广播机制概述
18 Broadcast介绍(转自; http://www.cnblogs.com/lwbqqyumidi/p/4168017.html)18.1广播机制概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下:(1)同一App内部的同一转载 2016-06-26 16:00:16 · 377 阅读 · 0 评论 -
APP开发实战73-BroadcastReceiver
(转自; http://www.cnblogs.com/lwbqqyumidi/p/4168017.html)18.2BroadcastReceiver自定义广播接收器需要继承基类BroadcastReceivre,并实现抽象方法onReceive(context,intent)方法。广播接收器接收到相应广播后,会自动回到onReceive(..)方法。默认情况下,广播接收转载 2016-06-28 22:06:57 · 318 阅读 · 0 评论 -
APP开发实战74-广播发送及广播类型
(转自; http://www.cnblogs.com/lwbqqyumidi/p/4168017.html)18.3广播发送及广播类型经常说”发送广播“和”接收“,表面上看广播作为Android广播机制中的实体,实际上这一实体本身是并不是以所谓的”广播“对象存在的,而是以”意图“(Intent)去表示。定义广播的定义过程,实际就是相应广播”意图“的定义过程,然后通过广播发送者转载 2016-06-28 22:09:11 · 485 阅读 · 0 评论 -
APP开发实战75-Local Broadcast:App应用内广播
(转自; http://www.cnblogs.com/lwbqqyumidi/p/4168017.html)18.3.5Local Broadcast:App应用内广播(此处的App应用以App应用进程为界)Android中的广播可以跨进程甚至跨App直接通信,且注册是exported,对于有intent-filter的情况下默认值是true,由此将可能出现安全隐患如下:转载 2016-06-28 22:10:47 · 993 阅读 · 0 评论 -
APP开发实战56-层间通信
15.3层间通信15.3.1通信方式层间通信主要有两种方式:(1) 消息优点:层间的耦合性比较小,而且一个消息可以有多个接收方,如广播消息。缺点:如果系统中的消息比较多,可能处理速度比较慢,或消息队列满了,接收方无法接收到消息。还有一种情况是A发消息给B的,但可能先被C接收了,B也无法接收到消息。(2) 回调函数优点:处理速度比较快。缺点:层间的耦合性比较大原创 2016-06-15 23:13:29 · 656 阅读 · 0 评论 -
APP开发实战84-点9图介绍
2.3点9图介绍2.3.1 简介在Android APP开发中,屏幕尺寸的多样性导致的界面适配,是让开发者非常头疼的问题:很多APP内置的图片在不同尺寸屏幕的设备上被放大拉伸后,边角会模糊失真,十分丑陋;针对不同的分辨率内置多套图片,又增大了APP安装包的大小。Google专门制作了一种.9.PNG格式图片来解决这个问题:这种格式的图片能按照设定来拉伸特定区域,而不是整体放大或缩小转载 2016-07-10 12:20:50 · 478 阅读 · 0 评论 -
APP开发实战3-APP产品和设计人员的工作
(12)在登录和注册界面,建议设计用户需要手动输入验证码,这样可以防止恶意攻击。 (13)iPhone手机基本都使用系统自带的输入法,在用户点击搜索区域,弹出输入法软键盘时,软键盘上会显示搜索按钮;Android手机上使用的输入法各式各样,输入法软键盘上不一定会有搜索按钮。在设计搜索界面时,iOS APP的右上角通常不需要有搜索按钮,但Android APP的右上角最好要设计有搜索按钮原创 2016-05-08 15:16:05 · 1408 阅读 · 0 评论 -
APP开发实战4-APP产品和设计人员的工作
(23)需要明确哪些界面用网页实现,哪些用Native代码实现;通常内容多变的界面,或者需要可以被链接索引传播的文字内容,等可以用嵌入网页的形式实现。 (24)如果在一块区域中,只有一个元素需要用户点击,那可适当扩大这个元素的长度和高度,或设计整个区域都响应用户点击,以方便用户操作。 (25)明确是否支持长登录,如果支持长登录时间维持多久。 (26)是否支持一个账号在多个设原创 2016-05-08 15:17:01 · 1352 阅读 · 0 评论 -
APP开发实战7-APP的尺寸标注工作
2.3APP的尺寸标注工作APP中使用的图片尺寸最好按偶数设计。因为AndroidAPP只内置了XHDPI的图片,如果当前手机的像素密度是MDPI,则系统会把内置的图片缩小一半,也就是除以2;如果像素密度是HDPI,系统会把内置的图片缩小一半,也就是除以2后,再放大150%,就是乘以1.5;如果是XXHDPI,系统会把内置的图片缩小一半,也就是除以2后,再放大300%,就是乘以3。在Win原创 2016-05-10 22:33:00 · 965 阅读 · 0 评论 -
APP开发实战10-APP数据同步方案
3.3数据同步方案3.3.1 文件的同步通常图片都需要在APP端做缓存处理,所以从服务器端返回图片链接的时候,一定要同时返回图片最新修改的时间戳。APP根据本地存储图片的时间戳和从服务器获取的时间戳对比,判断是否需要更新本地缓存。对于其余类型的数据文件,可以用时间戳,也可以用版本号做为是否更新的依据,而且最好把版本号或时间戳保存在数据文件里。如果用户使用APP遇到和数据文件相关的问原创 2016-05-11 22:07:32 · 5235 阅读 · 0 评论 -
APP开发实战11-APP登录状态的维持
3.4登录状态的维持目前APP大都支持长登录,就是用户登录一次后,如果用户没有主动注销、清除APP缓存数据或卸载APP,就在一段时间内或一直保持登录状态。3.4.1 利用Token实现APP登录成功后,服务器以某种方式,如随机生成N位的字符串作为Token,同时设置一个有效期,存储到服务器中,并返回Token给APP。后续APP发送请求时,都要带上该Token,每次服务器端收到请求原创 2016-05-11 22:16:23 · 4071 阅读 · 0 评论 -
APP开发实战12-业务逻辑的实现
3.5业务逻辑的实现(1)目前用户使用的手机软硬件性能和服务器相差甚远,尤其是Android手机,千元机以下的低端机占据很大份额,所以对数据的处理和业务逻辑等能放在服务器端实现的,尽量在服务器端实现,APP端只负责显示和处理用户交互。这样当业务逻辑发生变化时,只需更新服务器的代码,不需要用户升级APP,有利于整个系统的运营、维护和升级。(2)存储在APP自身文件夹里的数据,在用户清除缓原创 2016-05-12 22:19:09 · 1725 阅读 · 0 评论 -
APP开发实战13-接口文档的维护
3.6接口文档的维护接口文档通常由服务器端负责接口开发的同事维护,对于每个接口的描述,应包括以下内容:(1) 请求URL。(2) 接口的负责人名称。(3) 请求方式GET或POST。(4) 接口版本号。(5) APP端应发送的数据和格式。(6) 服务器端的操作成功时,返回的数据和格式。(7) 服务器端的操作失败时,返回的数据和格式。原创 2016-05-12 22:37:39 · 773 阅读 · 0 评论 -
APP开发实战18-TCP/IP协议简介
当前APP基本都需要通过网络连接服务器,网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。最常用的协议族,比如TCP/IP通常被认为是一个四层协议系统:应用层传输层网络层链路层每一层负责不同的功能:(1)链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何转载 2016-05-15 23:04:33 · 1257 阅读 · 0 评论 -
APP开发实战19-TCP和HTTP连接
6.2TCP连接手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“三次握手”:第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的转载 2016-05-15 23:07:52 · 2564 阅读 · 0 评论 -
APP开发实战20-TCP和UDP区别
6.4TCP和UDP区别6.4.1面向连接服务TCP提供的是面向连接服务,传输数据要经过三个阶段:(1)数据传输前,先建立连接(2)连接建立后再传输数据(3)数据传送完后,释放连接TCP所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等,可确保数据传送的次序和传输的可靠性。由于传输层提供了高可靠性的端到端的原创 2016-05-15 23:08:55 · 1698 阅读 · 0 评论 -
APP开发实战21-Socket概念
6.5Socket介绍6.5.1Socket概念Socket是对TCP/IP协议的封装和应用,本身并不是协议,是应用层与TCP/IP协议族通信的中间软件抽象层,是一组接口(API)。Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,提供了许多针对TCP或者UDP编程的函数接口,比如create、listen、connect、accept、sen转载 2016-05-16 21:01:50 · 634 阅读 · 0 评论 -
APP开发实战22-Socket连接
6.5.2Socket连接 建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket,另一个运行于服务器端,称为ServerSocket。套接字之间的连接过程分为三个步骤:(1)服务器监听服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。(2)客户端请求指客户端的套接字提出连接转载 2016-05-16 21:02:32 · 1998 阅读 · 0 评论 -
APP开发实战23-通信过程
6.5.5通信过程主机 A的应用程序要能和主机 B的应用程序通信,必须通过 Socket建立连接,而建立 Socket连接必须需要底层 TCP/IP协议来建立 TCP 连接。建立 TCP 连接需要底层 IP协议来寻址网络中的主机。我们知道网络层使用的 IP协议可以帮助我们根据 IP地址来找到目标主机,但是一台主机上可能运行着多个应用程序,如何才能与指定的应用转载 2016-05-16 21:03:12 · 618 阅读 · 0 评论 -
APP开发实战24-HTTP协议简介
7 HTTP介绍7.1协议简介 HTTP(超文本传输协议HyperTextTransfer Protocol)是互联网上应用最为广泛的一种网络协议,是万维网协会(World Wide Web Consortium)和Internet工作小组(Internet EngineeringTask Force)合作的结果,二者发布了一系列的RFC,其中最著名的就是RFC 2616,其定原创 2016-05-16 21:10:13 · 658 阅读 · 0 评论 -
APP开发实战25-HTTP运作方式
7.2 HTTP运作方式HTTP协议采用了请求/响应模型。一次HTTP操作称为一个事务,其工作过程可分为四步: (1)客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。 (2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。 (3)原创 2016-05-16 21:11:26 · 440 阅读 · 0 评论 -
APP开发实战26-HTTP消息
7.3HTTP消息HTTP消息包括客户机向服务器的请求消息(Request)和服务器向客户机的响应消息(Response)。这两种类型的消息由一个起始行,一个或者多个头字段,一个指示头字段结束的空行和可选的消息体组成。7.3.1请求消息 请求消息的第一行为下面的格式: Method SP Request-URI SPHTTP-Version CRLFMethod表示对于Req原创 2016-05-18 21:43:07 · 417 阅读 · 0 评论 -
APP开发实战28-POST与GET的区别
7.4.2POST与GET的区别GET和POST方式的区别如下:(1)GET通常用于从服务器上获取数据,POST用于向服务器传送数据。(2)GET请求提交的数据放置在URL中,而POST提交的数据则放在BODY体中。(3)GET传送的数据量较小,POST传送的数据量较大,主要受限于服务器的处理能力。(在FORM提交的时候,如果不指定Method,则默认为GET请求(.net默认原创 2016-05-21 17:48:38 · 2290 阅读 · 0 评论 -
APP开发实战29-HTTP头字段介绍
7.5HTTP头字段介绍HTTP的头字段包括通用头,请求头,响应头和实体头四个部分。每个头字段由一个字段名,冒号(:)和字段值三部分组成。字段名是大小写无关的,域值前可以添加任何数量的空格符,头字段可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。7.5.1通用头字段通用头字段包含请求和响应消息都支持的头字段,如Cache- Control、Connection、Date、Pr转载 2016-05-21 17:51:34 · 597 阅读 · 0 评论 -
APP开发实战30-HTTP头字段介绍2
7.5.2请求头字段允许客户端向服务器传递关于请求或者关于客户机的附加信息。 请求头字段可能包含下列字段Accept、Accept-Charset、Accept-Encoding、Accept-Language、 Authorization、From、Host、If-Modified-Since、If-Match、If-None-Match、If- Range、If-Range、If-Unmo转载 2016-05-21 17:54:08 · 438 阅读 · 0 评论