关键字: android app,android develop, android summary

2010.04启动该项目到现在完成主要功能模块,分享一下开发历程和注意事项。
开发环境: ubuntu7.10 + eclipse 3.5 + sdk
下面是开发总结:

  1. 基于源码级的SDK以及SDK升级注意事项
    • 熟悉其如何做资源国际化
    • 熟悉其如何支持不同屏幕大小 , 不同 density 介质
    • 熟悉其主要的API以及支持的最低版本和不被再支持的API
    • 了解其分层架构
    • 升级SDK
      • 确保 该平台支持相关的 cglib 版本 ( 否则要升级 ubuntu)
      • 简单容行的方式是remove ~/.android下的相关东西,remove先前的相关版本,再升级
      • 部分Resources(如strings中有%s的)可能需要修改才能适应新的版本
      • 新的sdk里可能不包括老的如2.01版本
  2. Emulator & Mobile
    • 用adb shell 操作emulator
      • http://www.iteye.com/topic/260042
    • push / pull file in emulator
      • Eclipse->window->Show View->File Explorer-> pull a filefrom the device(or push a file onto the device)
    • 用 real mobile连接usb来直接测试(mobile 必须设置为develop/debug mode)
      • http://dimitar.me/how-to-connect-your-android-phone-to-ubuntu-to-do-developmenttestinginstallations-or-tethering/
    • emulator更能用于性能测试,功能测试。而mobile更适合触摸操作测试和一些View的真实展现测试
    • 屏幕大小适应测试(枚举大,中,小),屏幕方向(枚举横,竖屏),任务切换测试
    • 内存适应只能在mobile上做测试
  3. 系统配置项
    • SharedPreferences存储位置及如何在emulator上手动修改
      • 找到存储位置: \data\data\your package dir\shared_prefs\your xml files
      • 按照上面的pull/push the file
    • SQLite(sqlite3)
      • 默认存储位置:\data\data\your package dir\databases\your database name
      • 按照上面的用adb shell 操作emulator做部分database的设计和数据更新
      • 设计版本更新和升级
    • Other File I/O
      • assert下文件读取
      • 文件权限以及读写
    • 解读AndroidManifest.xml
      • application/process标识
      • 最开始启动的activity
      • activity栈的形式(指定taskAffinity&launchMode="singleTask"),而且转向一个新的activity是用intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)的形式
      • 需要的权限部分
      • 支持的最低版本
  4. 基于View,Context,Manager的开发
    • 系统View & Layout(Layout也是View)
      • 用View本身来做其他Layout间的一个分隔
      • 常用的View&Layout: ListView,ScrollView,RelativeLayout,TableLayout
      • 设计常用的style/theme用到的Drawable: http://idunnolol.com/android/drawables.html
      • 常用的图片操作
        • 指定颜色的渲染( setColorFilter)
        • 剪裁
    • 自定义View & Layout
      • Java代码
        1. publicclassTouchListViewextendsListView{publicTouchListView(Contextcontext,AttributeSetattrs,intdefStyle){
        2. }}
      • Java代码
        1. publicclassToolbarextendsLinearLayout{
        2. publicToolbar(finalContextcontext){
        3. super(context);
        4. }
        5. publicToolbar(finalContextcon,AttributeSetattrs){
        6. }
        7. }
    • Application,Activity,Service,View,Intent
      • Application,Activity,Service与Context的关系
      • View与Context的关系
      • 用Application来做Activity,Service,View间的全局变量(这比自己用Singleton实现好)
      • 用工厂模式使用Intent
        • 做activity跳转
        • sendBroadcast(实时数据交换可借助Thread+ BroadcastReceiver)
    • WindowManager 、PackageManager 等的使用
  5. 网络IO
    • java.net
    • android.net
    • org.apache.http
      • 如果没有让他在AsyncTask中操作,则他的TimeOut设置必须少于5秒(为ANR等待时间)
      • java.net.UnknownHostException
        • 如果发生在emulator,可参考:http://blog.csdn.net/abby_dcy/archive/2010/08/09/5798945.aspx
        • 如果发生在mobile,则一般是DNS解析问题,要么允许用户再重试操作,要么把Host的域名改为public ip address
  6. 绘图部分
    • 在View上绘图
      • 只在原来View上加边框等
        • Java代码
          1. @Override
          2. protectedvoiddispatchDraw(Canvascanvas){}
      • 自定义View
        • Java代码
          1. @Override
          2. protectedvoidonDraw(Canvascanvas){
    • 在Bitmap上绘图
      • Java代码
        1. Bitmapresult=Bitmap.createBitmap(48,48,Config.ARGB_8888);
        2. Canvascanvas=newCanvas(result);
        3. ...
        4. canvas.drawBitmap(result,rect,rect,paint);
  7. 动画
    • 帧动画
      • 控制侦速率在25FPS以让其更流畅
    • 渐变动画
      • 平移
      • 缩放
      • 旋转
      • 透明
  8. ANR
    • 构建消息以及消息循环处理Handler
    • 使用AsyncTask
  9. Exception &UncaughtException
    • 使用UncaughtExceptionHandler
  10. 引入第三方jar以及与其他app共享数据
    • 通过add user library方式添加第三方jar
    • Content Provider的使用
  11. 性能优化/调优
    • 基于View的优化 http://dl.iteye.com/topics/download/774b3e9e-1c48-33bd-bc9d-5c27da998181
    • 代码级的规范
    • Method级的调优
      • Method Profiling(如果直接usb连接mobile,需要root权限作此项)
    • GC分析
      • 使用Allocation Tracker

更多相关文章

  1. Android里遇到Debug能用,Release不能用的API的问题
  2. ubuntu16.04 + Qt5.13 搭建安卓开发环境
  3. Android(安卓)Databinding:再见Presenter,你好ViewModel
  4. Recovery模式的命令行参数
  5. Android单元测试:测试RxJava的同步及异步操作
  6. Kotlin Anko 使用相对布局 RelativeLayout
  7. Android仿网易新闻图片详情下滑隐藏效果示例代码
  8. android解决:使用多线程和Handler同步更新UI
  9. Android培训班(26)

随机推荐

  1. Android(安卓)R文件
  2. android电话
  3. android 自定义Dialog页面加载中效果的进
  4. Android(安卓)button按钮点击过快造成多
  5. android contentprovider 查询时候使用li
  6. Android(安卓)字体自适应设置
  7. Android短信窃听器短信拦截
  8. Android之实现手势缩放的ImageView
  9. android ApiDemo学习(一)service——6 Remo
  10. Android(安卓)Style.xml的应用详解及代码