ndroid企业应用项目开发总结

本文分享了在完成多个Android企业应用项目的开发历程和注意事项,包括应用规划、架构设计、界面设计、数据操作与存储、业务实现以及页面跳转等方面的经验总结。详细介绍了开发环境配置、SDK使用、Emulator与Mobile的测试方法、系统配置项处理、基于View的开发、网络IO、绘图部分、ANR处理、异常管理、第三方jar引入、数据共享、性能优化等多个方面。

做了几个android企业应用项目后,总结了项目的基本开发步骤,希望能够交流。
一 应用规划:
※确定功能。
※必须的界面及界面跳转的流程。
※需要的数据及数据的来源及格式。
※是否需要服务端支持。
※是否需要本地数据库支持。
※是否需要特殊权限。
※是否需要后台服务。
二 架构设计:
※分层。
※网络连接。
※数据处理-xml、domain。
※封装Activity。
三 界面设计:
※主界面确定。
※模块界面、列表、查看、编辑界面。
※菜单、按钮、对话框、提示信息。
※界面总体颜色。
四 数据操作和存储:
※数据来源。
※数据类型。
※存储方式。
五 业务实现:
※客户端业务解析。
六 页面跳转:
※每个页面间的跳转。
※菜单、按钮、事件等。

关键字: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 filefrom the device(or push a file onto the device)

o 用 real mobile连接usb来直接测试(mobile 必须设置为develop/debug mode)

§ http://dimitar.me/how-to-connect-your-android-phone-to-ubuntu-to-do-developmenttestinginstallations-or-tethering/

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.publicclassTouchListViewextendsListView{publicTouchListView(Contextcontext,AttributeSetattrs,intdefStyle){

2.}}

§ Java代码

1.publicclassToolbarextendsLinearLayout{

2.publicToolbar(finalContextcontext){

3.super(context);

4.}

5.

6.publicToolbar(finalContextcon,AttributeSetattrs){

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.protectedvoiddispatchDraw(Canvascanvas){}

§ 自定义View

§ Java代码

1.@Override

2.protectedvoidonDraw(Canvascanvas){

o 在Bitmap上绘图

§ Java代码

1.Bitmapresult=Bitmap.createBitmap(48,48,Config.ARGB_8888);

2.Canvascanvas=newCanvas(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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值