Android_app项目开发步骤总结
做了几个android企业应用项目后,总结了项目的基本开发步骤。希望可以交流。
一 应用规划:
※确定功能。
※必须的界面及界面跳转的流程。
※须要的数据及数据的来源及格式。
※是否须要服务端支持。
※是否须要本地数据库支持。
※是否须要特殊权限。
※是否须要后台服务。
二 架构设计:
※分层。
※网络连接。
※数据处理-xml、domain。
※封装Activity。
三 界面设计:
※主界面确定。
※模块界面、列表、查看、编辑界面。
※菜单、button、对话框、提示信息。
※界面整体颜色。
四 数据操作和存储:
※数据来源。
※数据类型。
※存储方式。
五 业务实现:
※client业务解析。
六 页面跳转:
※每一个页面间的跳转。
※菜单、button、事件等。
keyword:android app, android develop, android summary
从2010.04启动该项目到如今完毕主要功能模块,分享一下开发历程和注意事项。
开发环境: ubuntu7.10 +eclipse 3.5 + sdk
以下是开发总结:
1. 基于源代码级的SDK以及SDK升级注意事项
o 熟悉其怎样做资源国际化
o 熟悉其怎样支持不同屏幕大小,不同density介质
o 熟悉其基本的API以及支持的最低版本号和不被再支持的API
o 了解其分层架构
o 升级SDK
§ 确保该平台支持相关的cglib版本号(否则要升级ubuntu)
§ 简单容行的方式是remove ~/.android下的相关东西,remove先前的相关版本号,再升级
§ 部分Resources(如strings中有%s的)可能须要改动才干适应新的版本号
§ 新的sdk里可能不包含老的如2.01版本号
2. Emulator & Mobile
o 用adb shell 操作emulator
§ http://www.javaeye.com/topic/260042
o push / pull file in emulator
§ Eclipse->window->Show View->File Explorer->pull a file from the device(or push a file onto the device)
o 用 real mobile连接usb来直接測试(mobile 必须设置为develop/debug mode)
o emulator更能用于性能測试,功能測试。而mobile更适合触摸操作測试和一些View的真实展现測试
o 屏幕大小适应測试(枚举大,中,小),屏幕方向(枚举横,竖屏),任务切换測试
o 内存适应仅仅能在mobile上做測试
3. 系统配置项
o SharedPreferences存储位置及怎样在emulator上手动改动
§ 找到存储位置: \data\data\your package dir\shared_prefs\your xml files
§ 依照上面的pull/push the file
o SQLite(sqlite3)
§ 默认存储位置:\data\data\your package dir\databases\your database name
§ 依照上面的用adb shell 操作emulator做部分database的设计和数据更新
§ 设计版本号更新和升级
o Other File I/O
§ assert下文件读取
§ 文件权限以及读写
o 解读AndroidManifest.xml
§ application/process标识
§ 最開始启动的activity
§ activity栈的形式(指定taskAffinity&launchMode="singleTask"),并且转向一个新的activity是用intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)的形式
§ 须要的权限部分
§ 支持的最低版本号
4. 基于View,Context,Manager的开发
o 系统View & Layout(Layout也是View)
§ 用View本身来做其它Layout间的一个分隔
§ 经常使用的View&Layout:ListView,ScrollView,RelativeLayout,TableLayout
§ 设计经常使用的style/theme用到的Drawable: http://idunnolol.com/android/drawables.html
§ 经常使用的图片操作
§ 指定颜色的渲染(setColorFilter)
§ 剪裁
o 自己定义View & Layout
§ Java代码
1. public class TouchListView extends ListView { public TouchListView(Context context, AttributeSet attrs, int defStyle) {
2. } }
§ Java代码
1. public class Toolbar extends LinearLayout {
2. public Toolbar(final Context context) {
3. super(context);
4. }
5.
6. public Toolbar(final Context con, AttributeSet attrs) {
7. }
8.
9. }
o Application,Activity,Service,View,Intent
§ Application,Activity,Service与Context的关系
§ View与Context的关系
§ 用Application来做Activity,Service,View间的全局变量(这比自己用Singleton实现好)
§ 用工厂模式使用Intent
§ 做activity跳转
§ sendBroadcast(实时数据交换可借助Thread+ BroadcastReceiver)
o WindowManager 、PackageManager 等的使用
2. 网络IO
o java.net
o android.net
o org.apache.http
§ 假设没有让他在AsyncTask中操作。则他的TimeOut设置必须少于5秒(为ANR等待时间)
§ java.net.UnknownHostException
§ 假设发生在emulator,可參考: http://www.javaeye.com/topic/521023
§ 假设发生在mobile,则通常是DNS解析问题,要么同意用户再重试操作。要么把Host的域名改为public ip address
3. 画图部分
o 在View上画图
§ 仅仅在原来View上加边框等
§ Java代码
1. @Override
2. protected void dispatchDraw(Canvas canvas) {}
§ 自己定义View
§ Java代码
1. @Override
2. protected void onDraw(Canvas canvas) {
o 在Bitmap上画图
§ Java代码
,, Config.ARGB_8888);
2. Canvas canvas = new Canvas(result);
3. ...
4. canvas.drawBitmap(result, rect, rect, paint);
2. 动画
o 帧动画
§ 控制侦速率在25FPS以让其更流畅
o 渐变动画
§ 平移
§ 缩放
§ 旋转
§ 透明
3. ANR
o 构建消息以及消息循环处理Handler
o 使用AsyncTask
4. Exception & UncaughtException
o 使用UncaughtExceptionHandler
5. 引入第三方jar以及与其它app共享数据
o 通过add user library方式加入第三方jar
o Content Provider的使用
6. 性能优化/调优
o 基于View的优化http://dl.javaeye.com/topics/download/774b3e9e-1c48-33bd-bc9d-5c27da998181
o 代码级的规范
o Method级的调优
§ Method Profiling(假设直接usb连接mobile,须要root权限作此项)
o GC分析
§ 使用Allocation Tracker
源文档下载
Android_app项目开发步骤总结的更多相关文章
- EJB3.0高速入门项目开发步骤
EJB3.0开发步骤 1. 开发环境 IDE开发工具:Eclipse Java EE IDE for Web Developers EJB容器:jboss-4.2.3.GA 后台数据库:MysQL ...
- 总结android项目的基本开发步骤(转帖)
总结android项目的基本开发步骤(转帖) 做了几个android企业应用项目后,总结了项目的基本开发步骤,希望能够交流.一 应用规划: ※确定功能. ※必须的界面及界面跳转的流程. ...
- Struts2入门项目开发小步骤
Step1: Struts2的获取和添加到项目中: 在官方网站:http://struts.apache.org 获取Struts的其中一个版本. 在开发项目之前,需要添加struts2的类库支持,也 ...
- 如何使用Worktile进行敏捷项目开发管理
Worktile在任务管理上采用了看板视图,非常适合进行敏捷项目开发管理.事实上,在开发Worktile的过程中,我们也是自产自销,使用Worktile管理Worktile本身的开发过程,在本文中跟大 ...
- [转]基于Starling移动项目开发准备工作
最近自己趁业余时间做的flash小游戏已经开发得差不多了,准备再完善下ui及数值后,投放到国外flash游戏站.期间也萌生想法,想把游戏拓展到手机平台.这两天尝试了下,除去要接入ane接口的工作,小游 ...
- (转)一个JavaWeb项目开发总结
原文地址:http://www.cnblogs.com/lzb1096101803/p/4907775.html 一.学会如何读一个JavaWeb项目源代码 步骤:表结构->web.xml-&g ...
- iOS应用内付费(IAP)开发步骤列表
iOS应用内付费(IAP)开发步骤列表 前两天和服务端同事一起,完成了应用内付费(以下简称IAP, In app purchase)的开发工作.步骤繁多,在此把开发步骤列表整理如下.因为只是步骤列表, ...
- 第一章 企业项目开发--maven+springmvc+spring+mybatis+velocity整合
说明:本系列文章主要是对自己在一家大型互联网公司实习的过程中对所学知识的总结!参与的是实际中使用的上线项目. 代码的github地址:https://github.com/zhaojigang/ssm ...
- Django实际站点项目开发经验谈
开发了两个月的Django站点正式上线了,看着网站从无到有,从前端到后台,从本地开发到环境部署,一点一滴的堆砌成型,着实带给我不小的乐趣. Django站点介绍: 开发环境:阿里云服务器centos6 ...
随机推荐
- MVC简单分页
对Car汽车表分页 实现简单分页,放在这里方便查看回顾,自定义每页几条有点问题,有待完善······ 1.新建mvc项目 2.添加linq to sql 数据库连接 3.添加CarBF类 using ...
- 代码格式化工具Astyle配置
Astyle是一个很好的代码格式化工具,其他不多说,下面介绍一下我在VS 2010的配置 1. http://sourceforge.net/projects/astyle,这是该插件的网站,下载后把 ...
- Tomcat 乱码设置
如果表单是以get方式提交就会出现中文乱码这时可以在tomcat中配置解决中文乱码问题. 方法如下:在tomcat的conf文件夹下的conf中找到server.xml文件 找到 Connector ...
- Windows Azure 数据安全(清理和泄漏)
免责声明:本文档中所述过程为 2012 年 1 月时起的情况,如有变更,恕不另行通知. 希望将应用程序部署到 Windows Azure 的企业客户(实际上是所有客户)最为关心的就是其数据的安全性.释 ...
- 1.1.7-学习Opencv与MFC混合编程之---为画图工具添加工具栏
源代码:http://download.csdn.net/detail/nuptboyzhb/3961701 哎,其实里面有很多图片的,本来看起开很明了的,资源连接里有详细的文档,比下面的看的舒服的多 ...
- HDU1027 Ignatius and the Princess II 【next_permutation】【DFS】
Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ( ...
- for循环遍历字符串的还有一种方法
遍历字符c,让它各自等于字符串数组chars里面的各个字符.然后运行以下的语句,当c被赋值为chars里面全部字符各一次后.就会退出这个循环. 通常我们遍历字符串数组用 for(int i=0;i&l ...
- Windows 7中怎样找到真正的Administrator账户
出于安全因素方面的考虑,默认情况下 Windows 7 的系统管理员 Administrator 账户处于禁用状态.需要使用时,开启它其实也很简单,并不需要复杂的操作. 方法一:从系统管理中启用Adm ...
- Shell 传递参数
Shell 传递参数 向脚本传递参数,格式为:$n. 向脚本传递三个参数,并分别输出: echo "Shell 传递参数实例!"; echo "第一个参数为:$1&quo ...
- cocos2dx触屏响应(单点触摸)CCTouchBegan,CCTouchMove,CCTouchEnd
今天白白跟大家分享一下cocos2dx单点触摸经验. cocos2dx触摸CCTouch类的单点触摸有四个函数CCTouchBegan,CCTouchMove,CCTouchEnd,CCTouchCa ...