做了几个android企业应用项目后,总结了项目的基本开发步骤,希望能够交流。 
应用规划: 
    确定功能。 
    必须的界面及界面跳转的流程。 
    需要的数据及数据的来源及格式。 
    是否需要服务端支持。 
    是否需要本地数据库支持。 
    是否需要特殊权限。 
    是否需要后台服务。 
架构设计: 
    分层。 
    网络连接。 
    数据处理-xmldomain 
    封装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
www.javaeye/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)
/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 解读l
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: idunnolol/android/drawables.html
常用的图片操作
指定颜的渲染(setColorFilter)
剪裁
o 自定义View & Layout
Java代码 
1. public class TouchListView extends ListView {  public TouchListView(Context context, AttributeSet attrs, int defStyle) { 
2. } }   
Java代码 
3. public class Toolbar extends LinearLayout { 
4.     public Toolbar(final Context context) { 
5.         super(context); 
简易安卓app开发
6.     } 
7.      
8.     public Toolbar(final Context con, AttributeSet attrs) { 
9.   } 
10.  
11.
 
o Application,Activity,Service,View,Intent
Application,Activity,ServiceContext的关系
ViewContext的关系
Application来做Activity,Service,View间的全局变量(这比自己用Singleton实现好)
用工厂模式使用Intent
12. activity跳转
13. sendBroadcast(实时数据交换可借助Thread+ BroadcastReceiver)
o WindowManager PackageManager 等的使用
网络IO
o java
o android
o org.apache.http
如果没有让他在AsyncTask中操作,则他的TimeOut设置必须少于5(ANR等待时间)
java.UnknownHostException
14. 如果发生在emulator,可参考www.javaeye/topic/521023
15. 如果发生在mobile,则一般是DNS解析问题,要么允许用户再重试操作,要么把Host的域名改为public ip address
绘图部分
o View上绘图
只在原来View上加边框等
16. Java代码 
1. @Override 
2.     protected void dispatchDraw(Canvas canvas) {} 
 
自定义View
17. Java代码 
1. @Override 
2.     protected void onDraw(Canvas canvas) { 
 
o Bitmap上绘图
Java代码 
1. Bitmap result =&ateBitmap(48,48, 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的优化dl.javaeye/topics/download/774b3e9e-1c48-33bd-bc9d-5c27da998181
o 代码级的规范
o Method级的调优
Method Profiling(如果直接usb连接mobile,需要root权限作此项)
o GC分析
使用Allocation Tracker

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。