• 1. android框架及应用开发介绍 信息应用开发部 2009年9月
  • 2. 2Android的发展初探Android框架如何开发一个android应用如何开发一个widget目录
  • 3. Android发展路线2007年11月,Android发布2008年9月23日,HTC G1上市,android SDK 1.0发布2008年10月21日,android开源2009年4月27日,android SDK 1.5发布?android 2.0,代号donut,支持CDMA,多点触摸,文本语音引擎,…3
  • 4. Android手机一览4华为pulseLG Etna
  • 5. 5Android的发展初探Android框架如何开发一个android应用如何开发一个widget目录
  • 6. Android框架6JNIJAVAC/汇编
  • 7. Android应用程序构成7ActivityServiceBroadcast ReceiverContent ProviderIntent
  • 8. 8Activity
  • 9. ActivityA visual user interface 通过view管理UI 每一个有用户界面的应用至少包含一个activity 一个应用可以有多个activity,其中一个作为main activity用于启动显示 Activity通过startActivity或startActivityForResult启动另外的activity 9
  • 10. Activity——View通过View管理UI View绘制UI与处理UI event View可通过xml描述定义,也可在代码中生成。 setContentView(R.layout.main) Android建议将UI设计和逻辑分离 android UI设计类似swing,通过布局(layout)组织UI组件10
  • 11. Activity生命周期Activity通过onCreate被创建 当一个activity失去焦点,该activity将进入pause状态,系统在内存不足时会将其终止 当一个activity被另一个activity覆盖,该activity将进入stop状态,系统在需要内存的时候会将其终止11
  • 12. 12Intent
  • 13. Intent(1)13类似于消息、事件通知 Intent构成:action、category、data Activity、Service、broadcast receiver之间的桥梁IntentactivityserviceBroadcast receiver
  • 14. Intent(2)两类intent: 显式:指定具体的目标组件处理 startActivity(new Intent(ActivityLifecycle.this, AnotherActivity.class)); 隐式:由系统接受并决定如何处理 startActivity(new Intent(Intent.ACTION_DIAL)); 在AndroidManifest.xml中定义activity、service、broadcast receiver接受的intent14
  • 15. Intent(3)Intent filter: action、category、data15frameworkComponent name Action Data Category intentcomponentactivityserviceBroadcast receiver
  • 16. 实例16action -- DIAL data -- tel:02038639592action -- VIEW data -- http://www.google.cn
  • 17. 17Service
  • 18. Service没有UI,启动之后一直运行于后台 例子:音乐播放器 与应用程序的其他模块(例如activity)一同运行于主线程中 通过startService或bindService创建Service 通过stopService或stopSelf终止Service 一般的,在activity中启动和终止service 18
  • 19. Service生命周期onCreateonStartonDestroy19Context.stopService() Serivce.stopSelf()Context.startService()Context.bindService()
  • 20. 20Content Provider
  • 21. 何为Content provider什么是Content provider? Content Provider 是Android应用程序的四大组成部分之一 是android中的跨应用访问数据机制 为何需要content provider? Android中每一个app的资源是私有的 app通过content provider和其他app共享私有数据21
  • 22. 如何使用content provider通过content resolver访问 Context.getContentResolver() 22appContentResolverContentProvider AContentProvider BContentResolverContentResolverappapp
  • 23. 如何使用content provider(续)URI定位资源 content://contacts/people content://call_log 类似关系数据库的访问方式 以二维数据表的格式暴露数据,缺省都包含_id字段23delete(Uri url, String where, String[] selectionArgs) insert(Uri url, ContentValues values) query(Uri uri, String[] projection, String selection,  String[] selectionArgs, String sortOrder) update(Uri uri, ContentValues values, String where,  String[] selectionArgs)
  • 24. 定义自己的content provider在AndroidManifest.xml中声明一个provider 创建MyProvider类,继承自ContentProvider。定义该provider提供的数据集的URI和字段名在MyProvider中实现ContentProvider的6个abstract method:query, insert, update, delete, getType, onCreate在其他app中使用ContentResolver通过URI访问MyProvider提供的数据24
  • 25. Android的存储一般的,应用程序的数据(包括文件)都是私有的 四种持久存储方式 Preferences——类似properties,xml文件 Files Database——SQLite Network25
  • 26. 26Broadcast Receiver
  • 27. Broadcast receiver接收和处理android的广播消息 Android的广播机制 系统事件——例如变换时区、电量低等 应用程序发出广播消息:sendBroadCast 广播消息:intent27androidappBroadcast receiverSend broadcast
  • 28. 创建Broadcast Receiver实现一个BroadcastReceiver public class MyAndroidReceiver extends BroadcastReceiver override onReceive(Context context, Intents Intents) 注册BroadcastReceiver 在AndroidManifest.xml文件当中进行注册 在代码当中直接进行注册28 IntentsFilter filter = new IntentsFilter(NEW_BROADCAST ); MyAndroidReceiver MyAndroidReceiver = new MyAndroidReceiver(); registerReceiver(MyAndroidReceiver , filter);
  • 29. Broadcast receiver生命周期Create ObjectonReceiveDestroy object29Broadcast receiver对象在onReceive返回后被销毁onReceive中不适合处理异步过程。例如弹出对话框与用户交互,可使用消息栏替代。
  • 30. Android权限控制在AndroidManifest.xml中描述一个app的权限 例如: 30 权限举例(参考android. Manifest.permission) 权限名称权限描述接收短信android.permission.RECEIVE_SMS拨打电话android.permission.CALL_PHONE系统启动完毕通知android.permission.RECEIVE_BOOT_COMPLETED读取联系人信息android.permission.READ_CONTACTS修改联系人信息android.permission.WRITE_CONTACTS
  • 31. 31Android的发展初探Android框架如何开发一个android应用如何开发一个widget目录
  • 32. 工欲善其事,必先利其器Android SDK 最新版本:android-sdk-1.5_r2 AVD: android virtual device ADB: Android Debug Bridge Hierarchyviewer: UI解析 …… IDE: eclipse + ADT ADT: Android Development Tools 32
  • 33. Hello World33Android带UI应用的入口,类似mainUI界面设计的xml文件,android中采用一个xml描述UI
  • 34. Android project34Activity class自动生成的资源定义类存放应用使用的资源UI布局描述文件应用使用的静态字符串应用程序描述文件
  • 35. 基本UI组件35
  • 36. 36实例:MyPhonebook
  • 37. 37实例:短信未知号码提示
  • 38. 38Android的发展初探Android框架如何开发一个android应用如何开发一个widget目录
  • 39. App widget组成39AppWidget Provider InfoAppWidget ProviderAppWidget ViewApp widgetApp Widget描述文件。定义widget大小、更新频率、接收的intent等App widget主体,java类,负责widget初始化,各种消息的响应等App widget界面描述文件。描述widget主界面的布局、包含的控件、显示效果等Configure Activity用于配置app widget的activity
  • 40. App widget的UI设计40纵向屏幕横向屏幕CellsPixels4 x 1320 x 1003 x 3240 x 3002 x 2160 x 200CellsPixels4 x 1424 x 743 x 3318 x 2222 x 2212 x 148
  • 41. 几个widget41
  • 42. android widget的局限功能 界面类是RemoteViews而不是View或ViewGroup 只支持少数布局和控件 布局:LinearLayout, FrameLayout, RelativeLayout 控件:button, TextView, ImageView, ImageButton, ProgressBar, AnalogClock, Chronometer(类似timer) android管理widget的策略: 只有当一个widget的所有实例都被delete了,该widget才会被disable。否则,被delete的widget实例仍然会在后台运行,只是界面没显示。42
  • 43. 43谢谢!